From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.128.47 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794650456; b=M4g72u0JR2nCFWW++OPtnrUa+fpqBU6LK0d2uIHlIkxLRAdKeZ9sxNPkbXAewKvOpBsR eo4pIMjU2OzXdkbI4m3WrEY7YoqWjcT3NR23mfxjWhXrCsJj/NLIrk0QvjTR737S7Sfrr rnUy5YhRLuFbeuef/ubsorHCcjC/DbsmIs0p14E7shXsrhvOX6+RACMVmp5sj9b/wKbAQ vBSJoodOb5Wi2SrOQgt9Q0izR5qy9t9kae4RfdGDlIaFXunjI37gQPa0axO8pOgxxqd3U koCm2E1QCDjh3pajBv2Y/HNlrLuHhDSBdfXVG4WhxliRUAAZ5lHOOKTq5ecq57EQBnw== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794650456; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Forwarded-Encrypted:X-Gm-Message-State:X-Gm-Gg:X-Received:Received: From:To:Cc:Subject:Date:Message-ID:X-Mailer:MIME-Version:Content-Type: Content-Transfer-Encoding; bh=fGzu6S+vtoROaIzcwoSP9XCnpNyUzhPrDB39oZSUVZM=; b=kusMOeSFEDQt+ScOToYPtZrSwePcRLmXYFQyZQRYM02agi3qtwbHrdb0jhDuQOszJCXz QBx/aUt7UA/GlKJHTHFzXVhr1UqTeLRi7fGRbgHabkSHYvD2p098sitrWfeb8WON8pzYX Q0J1LpeEtvG9Rsqcy49DzhxMV9fYZtyfDILEGuCofGLiuAV3KwN/7KFs3kDIC9A0LmFl5 rSViIPmEYCDAXbjSTV13ulVM041FZUuNIxFdY6WuG9emgIXpqtnggRShwlxZnjbCbSlzy bNxQBjviRkLNHLR9TAU+MGexzHKOCDrPFHoB7M3irYeRvX7UKhSI2kke7R4wYk7y65w== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none header.from=osyx.tech; spf=none smtp.mailfrom=osyx.tech; dkim=pass header.d=osyx-tech.20260707.gappssmtp.com header.i=@osyx-tech.20260707.gappssmtp.com header.a=rsa-sha256 header.s=20260707 header.b=XPK4EC4T; arc=none smtp.remote-ip=209.85.128.47 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBFD3606A334 for ; Sat, 14 Nov 2026 10:00:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org EBFD3606A334 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=osyx.tech Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=osyx.tech Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=osyx-tech.20260707.gappssmtp.com header.i=@osyx-tech.20260707.gappssmtp.com header.a=rsa-sha256 header.s=20260707 header.b=XPK4EC4T Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4a35d5d4a20so27269885e9.2 for ; Sat, 14 Nov 2026 02:00:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osyx-tech.20260707.gappssmtp.com; s=20260707; t=1794650454; x=1795255254; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fGzu6S+vtoROaIzcwoSP9XCnpNyUzhPrDB39oZSUVZM=; b=XPK4EC4ThC+p5S3EY1c/dqFMgrPXJqEKK4Mi/JHTtKsIrNY/V/i0OuEzo9kgI/Dg5J VXipTpQQxz5I1+yaUsgyMezGYuKaLPw8n2B3LujE8MK/fQVbVTFR+kZSUGb4mmUSjzdK 4NshmqpF8+feWuxuMf8DFNWHgZZtoIHmB5vUXX8QqRvu5niP2BS5lFLab+aoZNAw2G5F VcWXrw741Dt1kmnm/lWeDuGiJXcCiCalC5GbKj0L7ZxMZhXTdC2cVElA8AZrEviwsEA+ gDzRdrl7rdEJjI9f4iqewZF7Fwo7mEgydZNKyJsQt9wm7VUXgrdvwevvVH1sT0J9954h 5P8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794650454; x=1795255254; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=fGzu6S+vtoROaIzcwoSP9XCnpNyUzhPrDB39oZSUVZM=; b=vtsIc32ia1Tgx+SyDrbDp/YVcFvgwdtPZd+tRzZHuVAWolKjdXa1fvtIcqj8GdC1dz cThJCGugsnURd1A2DMt0VnnsDQen51XJeeomStrOvm+CqLwx/b9M3MmtXuXb/hyY/cf7 5i1rAo5hd0GU6caOWc85oNOV0O9Rz84QgShvcGee2zCSV15pG2+18LIy9VK1/iLcmEb2 9mKveFDIk7MjZFE5GJSwOiaSh/NgpXLbMAInNEG3k8IK/1w8OcTA8ZQUiMLcM54Snsjz vY/NncoJ1btjUDBsdH67ECOHFdfzH6MUvmn8XcwlkWz4r7/t9XZTh79O2/vWznT2M+Co fzMA== X-Forwarded-Encrypted: i=1; AL+hErGBj25pkfosZM6ehJSFYIdoYRBsGiC5fzPbCGTK2LyAS2J6tgudmYi4dh1AzO+yI7V1F7bKidTFAXA=@vger.kernel.org X-Gm-Message-State: APuU4Z+h8oa5i5FjVoavnq6q4p97WaG3PxD8cR94TKE/o4+netraYUhD XB814sKJ7QJO5Amn9zZ9J9T9pyByvv304H5MeksNMISEl9eqH/vMU77SZWU9aik6hacp X-Gm-Gg: AYBFou3x7ZPTA06zkQsV4AwEEmnBpdDKvmTwQ29jB8K6dd4bxt8Ccv5m/5eVOSci9qU 0TnBtjtYO2x4oitfoPEAKiOB8IP+Hp/ogu72fB7/C67B+vZGnw5myAO7QHqlkICWJwTAFdI6ziR LIMJGlFLt9d6klP6qOWMRYxcvP2Iuh+5U+NVBw1tHL77B8FwGg9mLSgo3/iBZLpBd5pYC+jEYS8 J1kZZTRqdm2GGKU6CR9vAwcBLmM2PCQDE3oT+jP9FgxoLzVUrqH5gsvkjNWOIpxeWkSYpy0jeAx OuN4dWhQXswkuizwM0hg/OHmhYy+0qeY8I53Q7aIa1eNz6cbNHC9YhxeD4I9gQQt/buwVzwV0oq d0x0LjT4cpcNiWUy0HgtBTMV5g6XSSgeQZRqFwFdRTzMl1FOEtBHVZZUacw53as5/kajX49+WL5 cbJM+5g4ztxvOBxJz+crf1ZAuJsL/vPelSrTRtcx0SXSN/D6Zf/9pNpZWkzNb2wfHrU/d7CkJmt zdNheO5L4PK2L/2PrQt5cYUfJizohVoYmxSimW0HJfTO0wpWVwjjA7OysKgsYMnDhOMEIJOSEla ptpTVHyEAe4jvp5M5/emHUclZSYzE49l2w== X-Received: by 2002:a05:600c:1f96:b0:4ac:aae6:6401 with SMTP id 5b1f17b1804b1-4bb55a4d990mr111281695e9.12.1794650453934; Sat, 14 Nov 2026 02:00:53 -0800 (PST) Received: from jp-linux.Home ([2001:8a0:f59c:a900:a084:d599:46a5:5c31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-49c608d10b2sm16920053f8f.44.2026.11.14.02.00.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Nov 2026 02:00:53 -0800 (PST) From: =?UTF-8?q?Jo=C3=A3o=20Peixoto?= To: gregkh@linuxfoundation.org, will@kernel.org Cc: catalin.marinas@arm.com, andrew.jones@linux.dev, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, krzk+dt@kernel.org, robh@kernel.org, conor+dt@kernel.org, corbet@lwn.net, skhan@linuxfoundation.org, rdunlap@infradead.org, jose@osyx.tech, davidmcerdeira@osyx.tech, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v7 0/3] virt: bao: add Bao hypervisor IPC and I/O dispatcher drivers Date: Sat, 14 Nov 2026 10:00:46 +0000 Message-ID: X-Mailer: git-send-email 2.53.0 X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This series adds guest-side drivers for the Bao static-partitioning hypervisor: an IPC shared-memory driver, an I/O dispatcher that lets a backend guest service VirtIO I/O for frontend guests, their UAPI and a MAINTAINERS entry. Bao is a lightweight static-partitioning hypervisor for embedded and safety-critical systems (https://github.com/bao-project). - The IPC shared-memory driver lets Bao guests exchange data through a shared-memory region split into a read and a write channel, exposed as a misc character device (read(), write(), mmap()). The channels are declared on the kernel command line. - The I/O dispatcher bridges Bao's Remote I/O mechanism to a userspace VMM: the VMM creates each device model from /dev/bao, receives the frontend's MMIO accesses and completes them, with ioeventfd/irqfd support for the fast paths. Changes since v6 ---------------- The finding of the Sashiko review of v6 is addressed; it is in the I/O dispatcher, and patches 1 and 3 are unchanged. - The EPOLLHUP path of an irqfd marked it for shutdown and queued the shutdown work outside any lock that deassign and the device-model teardown take, so these could skip queueing it, flush and destroy the workqueue and free the device model before the work was queued. irqfds now follow KVM: an irqfd is active while it is on its device model's list, and whichever path deactivates it (EPOLLHUP, deassign or teardown) removes it from the list and queues its shutdown under the same spinlock, so the flushes always wait for every shutdown. Queueing the work unconditionally, as suggested, would instead let an EPOLLHUP re-queue a shutdown that is already running and free the irqfd twice. Changes since v5 ---------------- All findings of the Sashiko review of v5 are addressed. They are all in the I/O dispatcher; patches 1 and 3 are unchanged. - A device model is torn down in order: dispatching stops first, every I/O client is stopped before any is destroyed (the ioeventfds are released only once their thread is gone), then the queued, in-flight and still pending requests are completed. The dispatcher is no longer paused and resumed per client, which re-queued dispatch work during teardown and issued hypercalls when BAO_IOCTL_CREATE_DM failed. - IO_CLIENT_ATTACH publishes a request only once it has been copied to userspace, so a concurrent IO_REQUEST_COMPLETE cannot complete it twice. - ioeventfds follow KVM: two of them conflict when a write could match both, whatever eventfd they use; a request matches only the exact length; reads, and writes that no ioeventfd matches, are handed to the VMM instead of being answered or dropped by the kernel. - Matching a request against an I/O range rejects zero or oversized access widths and wrap-around. - An irqfd consumes the eventfd counter when signaled, and deassigning an unknown irqfd fails with -ENOENT. - The I/O dispatcher is 64-bit only: the Remote I/O fields did not fit the RV32 hypercall registers. Also, requests already pending when a device model is created (a frontend that started first, a VMM that restarted) are picked up at creation instead of waiting for a notification that does not come again. Changes since v4 ---------------- - BAO_IOCTL_CREATE_DM requires CAP_SYS_RAWIO, is refused under lockdown and claims a non-RAM region with request_mem_region(), mirroring /dev/mem. The notification line is checked against the interrupt controller and requested exclusively, and its mapping is never disposed, since it may be shared with whoever owns the line. - Requests that cannot be delivered are completed instead of stranded. The requests handed to the VMM are tracked: a completion only provides the value, and a VMM that exits leaves nothing behind. - ioeventfds and irqfds are bounded per device model, and a device model id is bound to one file descriptor at a time. - RISC-V: the hypercall status is the SBI value (a1), and both drivers depend on RISCV_SBI. - mmap goes through .mmap_prepare and only allows shared mappings; .compat_ioctl is set; the IPC driver never unwinds a registered device; bao_ipcshmem.channels= is documented in kernel-parameters.txt; rebased on v7.4-rc1. Changes since v3 ---------------- - No device tree (Krzysztof Kozlowski): the IPC channels are declared on the kernel command line and, following drivers/virt/acrn, the VMM creates each device model through /dev/bao (BAO_IOCTL_CREATE_DM), which returns a per-device-model file descriptor. - No architecture code (Will Deacon): the hypercalls use arm_smccc_hvc()/arm_smccc_1_2_hvc() and sbi_ecall() from a driver-private header. - The "consolidate the IPC hypercall ID" patch is folded in (Andrew Jones), and the ioctl type is 0xA7. Testing ------- Built on v7.4-rc1 with GCC 15 (W=1) for arm64, arm and riscv, at every commit, and with clang 21 (W=1) for arm64 and riscv. Run-time tested under Bao v2.0.0 on QEMU aarch64 virt and QEMU riscv64 virt with the bao-demos demos: the IPC driver exchanging messages in both directions between a Linux guest and a FreeRTOS guest, and the I/O dispatcher with a Linux backend serving console, network and block device models to a FreeRTOS guest and to Linux guests, including killing and restarting the VMMs, plus a userspace test of the /dev/bao error paths run next to the live VMMs, which now also races device-model teardown against eventfd close for the irqfds. The arm64 runs used a lockdep kernel. 32-bit Arm is compile-tested only. Open items ---------- - RISC-V: the Bao SBI extension still uses the experimental extension space (0x08000ba0), and the Remote I/O hypercall returns the request in a2-a7, which does not follow the SBI calling convention (Andrew Jones, v2). Changing that means a hypervisor ABI change (status in a0/a1, request through shared memory); the RISC-V support is experimental until then, or it can be split out of this series if preferred. - Bao does not implement the SMCCC vendor-hypervisor UID call, so the drivers cannot detect the hypervisor yet; adding it is planned on the hypervisor side. - The notification line is a line of the interrupt controller the device tree's root node points at through interrupt-parent; a guest whose root node has none cannot use the I/O dispatcher yet. v6: https://lore.kernel.org/all/cover.1794589639.git.jpeixoto@osyx.tech/ v5: https://lore.kernel.org/all/cover.1794038390.git.jpeixoto@osyx.tech/ v4: https://lore.kernel.org/all/cover.1790357735.git.jpeixoto@osyx.tech/ v3: https://lore.kernel.org/all/cover.1786010512.git.jpeixoto@osyx.tech/ João Peixoto (3): virt: bao: add IPC shared-memory driver virt: bao: add I/O dispatcher driver MAINTAINERS: add Bao hypervisor entry .../admin-guide/kernel-parameters.txt | 15 + .../userspace-api/ioctl/ioctl-number.rst | 2 + MAINTAINERS | 8 + drivers/virt/Kconfig | 2 + drivers/virt/Makefile | 1 + drivers/virt/bao/Kconfig | 5 + drivers/virt/bao/Makefile | 4 + drivers/virt/bao/bao_hypercall.h | 210 ++++++++ drivers/virt/bao/io-dispatcher/Kconfig | 20 + drivers/virt/bao/io-dispatcher/Makefile | 4 + drivers/virt/bao/io-dispatcher/bao_drv.h | 426 ++++++++++++++++ drivers/virt/bao/io-dispatcher/dm.c | 460 +++++++++++++++++ drivers/virt/bao/io-dispatcher/driver.c | 71 +++ drivers/virt/bao/io-dispatcher/intc.c | 186 +++++++ drivers/virt/bao/io-dispatcher/io_client.c | 475 ++++++++++++++++++ .../virt/bao/io-dispatcher/io_dispatcher.c | 184 +++++++ drivers/virt/bao/io-dispatcher/ioeventfd.c | 359 +++++++++++++ drivers/virt/bao/io-dispatcher/irqfd.c | 350 +++++++++++++ drivers/virt/bao/ipcshmem/Kconfig | 16 + drivers/virt/bao/ipcshmem/Makefile | 3 + drivers/virt/bao/ipcshmem/ipcshmem.c | 421 ++++++++++++++++ include/uapi/linux/bao.h | 126 +++++ 22 files changed, 3348 insertions(+) create mode 100644 drivers/virt/bao/Kconfig create mode 100644 drivers/virt/bao/Makefile create mode 100644 drivers/virt/bao/bao_hypercall.h 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/uapi/linux/bao.h base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4 -- 2.53.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86573606A8AE for ; Sat, 14 Nov 2026 10:01:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Rvkrp7zP; dkim=fail reason="signature verification failed" (2048-bit key) header.d=osyx-tech.20260707.gappssmtp.com header.i=@osyx-tech.20260707.gappssmtp.com header.a=rsa-sha256 header.s=20260707 header.b=GXxJlHfM DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Unsubscribe-Post:List-Owner; bh=5+zp3bA8NcR7GTgdXyMlpOtpW8r4fGvcydXwjTnwEJo=; b=Rvkrp7zPfj9zi6Rislq6F/TV55 UKHeF6HnMyuIhij1VzRxY9RCLQYPebB+PcD+dV+PBxKIOkBPW/dvMKTERoy8KXN7g7RnZDq+2inZM vYZDE0Wc+vJbzAkMZa9Oi/zHWSOs6Vi2K+PK62Y0Bh500DvsC/ds5ri5bbqurkJMqXjODVwqIeV0H TjL8e6itgv17tHWcI6r0u5gbnjTcQvNB3zGjxqpssvHwmQKeFmKmXCxBGYxAntt8k7C0NnWrerHo9 JMC694SYE86KlfjZKb4DGQENFdiKPIyGJthSt4/YL6BuI5qwueQtwCvnhVIChdgrYlS1pLhFFAP00 oUTmRH1w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xSAZ9-0000000FiEO-3bWi; Sat, 14 Nov 2026 10:00:59 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xSAZ6-0000000FiDF-0rTc for linux-riscv@lists.infradead.org; Sat, 14 Nov 2026 10:00:58 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4a1b07c3c5fso22763425e9.1 for ; Sat, 14 Nov 2026 02:00:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osyx-tech.20260707.gappssmtp.com; s=20260707; t=1794650454; x=1795255254; darn=lists.infradead.org; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fGzu6S+vtoROaIzcwoSP9XCnpNyUzhPrDB39oZSUVZM=; b=GXxJlHfMickS8me2QEqUccwBk2zwmNO8Hg18FKgDxOFAKatU2VKVzFldhfEW8/AcfE SWnRj70RFfKj4ccXQv90sVoViRWslmgJjLcLPPG1RRQDmd9dAWZsO+Y8b6Jh6CAMu/iK TUvPr5JabQjl3paR0BhgWvJLa6nkC0tkKFjta/3SutMMiwugi+VUmhj0Zbc6Uu/9jKu5 SEo4rmVpx7sfltRUjDQ+xIOFvW06q1z1ZY+ZDGZBhEvIhxlnWLEJ3OM2J8BPW9s34djX Z5AmePRH2no5PuuXyTrXuzihUZm/sjRmDaadD3Yq7Hj/DQnYW5BWKFdyT0e45QtVoAT0 8+aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794650454; x=1795255254; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=fGzu6S+vtoROaIzcwoSP9XCnpNyUzhPrDB39oZSUVZM=; b=pvdoTE9y8ofTUaVV9MnXAythW8qoHEtOoaoJzKoXjRk8vofll6R115Yb426vOkxsZJ gdJpYvhZ7zfPntBgQx5/7iPHDoaEQsMciu6Q/ubPJYg0h9E/ecnVmmaKzDrQ9s9fRqYU S26/f+zXibADYatw4XkpG5B+y7X8t7xhauqkpGp6j+3D2QxK926v6B1XpQVztQD4Ii+p MZEZxmDW4HGsdHo6Q6d4xmAX+7wchCp663e9B/2wp4Gs27iBeS15YG+GfKoYqZcwH4A9 WkoYeIO+XbWIcfD0Lay9OZvOPsoULhb0Hp+1B60Nv/DGVCLFwiQWEne63R/fz11/i7Tx OP4Q== X-Forwarded-Encrypted: i=1; AL+hErH+mXrlmQgeeecp5HfhxGNtyJv50zAQDlF7h7I/uhoxSbNFct+5ul1gscfTHVDCS1Wj7szTlqunVuG2PQ==@lists.infradead.org X-Gm-Message-State: APuU4Z/l1aH9PExwdFiz3xgER+Y7FOyQXTRGG1TkimJE9M4kD6C+0yYY u2U86IWCatUnh0i5BUNVYCYjd9gPjLbu5PfBBrmL9VgaFEWv9d8us3dJ7X6jqaykQ8t3 X-Gm-Gg: AYBFou3yt3TFFZkZ3nFddKSB+gZTjhauonD+uRCGPzIh9D1Im28fn9yDScUz3w4O9PQ FQsbkDF0SJuON0uAQ5BLwQLTXr3zJ7j1Q4gmvleGcranHHn243toUIBtc+lwrWhQ4s8vz98rVbl 9idJ9et09ItP2Zoqwu/DpVjXYPODIw/FwA7OrMT195LwyF27RIoigxcQXCxR1pdJ89tC44B9b+X b0DHA6xjtFgE2z3qG6exGGJPkFcGr2NA8hvCUbQX1EoMSYI7gmzU+Pfh5F849YEockIFKa/4Rjo OkF5Hqx6oHBh6+sNQ6kI7JXgdrggOEjhEaWrkVcRhnYnlvm4cq0E7A3nMjd1J37gJ2gnfvxbhAe MwW76EeZ0eHlMjnH/ESlnwKQLrSxqCsQ4x1HN25olDS+vZzqRcUK9JjZgpHBLbWmdnc54xSd0z9 JrIAycrp9DYhXaqvvPfbtkuwdewGwRWiRsJqjM4KpnOZLPmQ6yMd2O4ryxaAmw3DCL1Qpg6q7fy LMZtp0O6YTSNQTPfeW7+zygXnS1fxfcASksCFdUF3pFRWtXsglSKcPqj0pS+hmETeM+w83x1ojn zEqkV/63O/R8FSO4dK5V9J11FrQKEyUJ9Q== X-Received: by 2002:a05:600c:1f96:b0:4ac:aae6:6401 with SMTP id 5b1f17b1804b1-4bb55a4d990mr111281695e9.12.1794650453934; Sat, 14 Nov 2026 02:00:53 -0800 (PST) Received: from jp-linux.Home ([2001:8a0:f59c:a900:a084:d599:46a5:5c31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-49c608d10b2sm16920053f8f.44.2026.11.14.02.00.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Nov 2026 02:00:53 -0800 (PST) From: =?UTF-8?q?Jo=C3=A3o=20Peixoto?= To: gregkh@linuxfoundation.org, will@kernel.org Cc: catalin.marinas@arm.com, andrew.jones@linux.dev, pjw@kernel.org, palmer@dabbelt.com, aou@eecs.berkeley.edu, alex@ghiti.fr, krzk+dt@kernel.org, robh@kernel.org, conor+dt@kernel.org, corbet@lwn.net, skhan@linuxfoundation.org, rdunlap@infradead.org, jose@osyx.tech, davidmcerdeira@osyx.tech, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-doc@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v7 0/3] virt: bao: add Bao hypervisor IPC and I/O dispatcher drivers Date: Sat, 14 Nov 2026 10:00:46 +0000 Message-ID: X-Mailer: git-send-email 2.53.0 X-Archived-By: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261114_020056_520306_5840C27D X-CRM114-Status: GOOD ( 29.51 ) X-Spam-Score: -1.9 (-) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" X-Spam-Status: No, score=-16.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhpcyBzZXJpZXMgYWRkcyBndWVzdC1zaWRlIGRyaXZlcnMgZm9yIHRoZSBCYW8gc3RhdGljLXBh cnRpdGlvbmluZwpoeXBlcnZpc29yOiBhbiBJUEMgc2hhcmVkLW1lbW9yeSBkcml2ZXIsIGFuIEkv TyBkaXNwYXRjaGVyIHRoYXQgbGV0cyBhCmJhY2tlbmQgZ3Vlc3Qgc2VydmljZSBWaXJ0SU8gSS9P IGZvciBmcm9udGVuZCBndWVzdHMsIHRoZWlyIFVBUEkgYW5kIGEKTUFJTlRBSU5FUlMgZW50cnku CgpCYW8gaXMgYSBsaWdodHdlaWdodCBzdGF0aWMtcGFydGl0aW9uaW5nIGh5cGVydmlzb3IgZm9y IGVtYmVkZGVkIGFuZApzYWZldHktY3JpdGljYWwgc3lzdGVtcyAoaHR0cHM6Ly9naXRodWIuY29t L2Jhby1wcm9qZWN0KS4KCi0gVGhlIElQQyBzaGFyZWQtbWVtb3J5IGRyaXZlciBsZXRzIEJhbyBn dWVzdHMgZXhjaGFuZ2UgZGF0YSB0aHJvdWdoIGEKICBzaGFyZWQtbWVtb3J5IHJlZ2lvbiBzcGxp dCBpbnRvIGEgcmVhZCBhbmQgYSB3cml0ZSBjaGFubmVsLCBleHBvc2VkCiAgYXMgYSBtaXNjIGNo YXJhY3RlciBkZXZpY2UgKHJlYWQoKSwgd3JpdGUoKSwgbW1hcCgpKS4gVGhlIGNoYW5uZWxzCiAg YXJlIGRlY2xhcmVkIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgotIFRoZSBJL08gZGlzcGF0 Y2hlciBicmlkZ2VzIEJhbydzIFJlbW90ZSBJL08gbWVjaGFuaXNtIHRvIGEgdXNlcnNwYWNlCiAg Vk1NOiB0aGUgVk1NIGNyZWF0ZXMgZWFjaCBkZXZpY2UgbW9kZWwgZnJvbSAvZGV2L2JhbywgcmVj ZWl2ZXMgdGhlCiAgZnJvbnRlbmQncyBNTUlPIGFjY2Vzc2VzIGFuZCBjb21wbGV0ZXMgdGhlbSwg d2l0aCBpb2V2ZW50ZmQvaXJxZmQKICBzdXBwb3J0IGZvciB0aGUgZmFzdCBwYXRocy4KCkNoYW5n ZXMgc2luY2UgdjYKLS0tLS0tLS0tLS0tLS0tLQpUaGUgZmluZGluZyBvZiB0aGUgU2FzaGlrbyBy ZXZpZXcgb2YgdjYgaXMgYWRkcmVzc2VkOyBpdCBpcyBpbiB0aGUgSS9PCmRpc3BhdGNoZXIsIGFu ZCBwYXRjaGVzIDEgYW5kIDMgYXJlIHVuY2hhbmdlZC4KLSBUaGUgRVBPTExIVVAgcGF0aCBvZiBh biBpcnFmZCBtYXJrZWQgaXQgZm9yIHNodXRkb3duIGFuZCBxdWV1ZWQgdGhlCiAgc2h1dGRvd24g d29yayBvdXRzaWRlIGFueSBsb2NrIHRoYXQgZGVhc3NpZ24gYW5kIHRoZSBkZXZpY2UtbW9kZWwK ICB0ZWFyZG93biB0YWtlLCBzbyB0aGVzZSBjb3VsZCBza2lwIHF1ZXVlaW5nIGl0LCBmbHVzaCBh bmQgZGVzdHJveSB0aGUKICB3b3JrcXVldWUgYW5kIGZyZWUgdGhlIGRldmljZSBtb2RlbCBiZWZv cmUgdGhlIHdvcmsgd2FzIHF1ZXVlZC4KICBpcnFmZHMgbm93IGZvbGxvdyBLVk06IGFuIGlycWZk IGlzIGFjdGl2ZSB3aGlsZSBpdCBpcyBvbiBpdHMgZGV2aWNlCiAgbW9kZWwncyBsaXN0LCBhbmQg d2hpY2hldmVyIHBhdGggZGVhY3RpdmF0ZXMgaXQgKEVQT0xMSFVQLCBkZWFzc2lnbiBvcgogIHRl YXJkb3duKSByZW1vdmVzIGl0IGZyb20gdGhlIGxpc3QgYW5kIHF1ZXVlcyBpdHMgc2h1dGRvd24g dW5kZXIgdGhlCiAgc2FtZSBzcGlubG9jaywgc28gdGhlIGZsdXNoZXMgYWx3YXlzIHdhaXQgZm9y IGV2ZXJ5IHNodXRkb3duLiBRdWV1ZWluZwogIHRoZSB3b3JrIHVuY29uZGl0aW9uYWxseSwgYXMg c3VnZ2VzdGVkLCB3b3VsZCBpbnN0ZWFkIGxldCBhbiBFUE9MTEhVUAogIHJlLXF1ZXVlIGEgc2h1 dGRvd24gdGhhdCBpcyBhbHJlYWR5IHJ1bm5pbmcgYW5kIGZyZWUgdGhlIGlycWZkIHR3aWNlLgoK Q2hhbmdlcyBzaW5jZSB2NQotLS0tLS0tLS0tLS0tLS0tCkFsbCBmaW5kaW5ncyBvZiB0aGUgU2Fz aGlrbyByZXZpZXcgb2YgdjUgYXJlIGFkZHJlc3NlZC4gVGhleSBhcmUgYWxsIGluCnRoZSBJL08g ZGlzcGF0Y2hlcjsgcGF0Y2hlcyAxIGFuZCAzIGFyZSB1bmNoYW5nZWQuCi0gQSBkZXZpY2UgbW9k ZWwgaXMgdG9ybiBkb3duIGluIG9yZGVyOiBkaXNwYXRjaGluZyBzdG9wcyBmaXJzdCwgZXZlcnkK ICBJL08gY2xpZW50IGlzIHN0b3BwZWQgYmVmb3JlIGFueSBpcyBkZXN0cm95ZWQgKHRoZSBpb2V2 ZW50ZmRzIGFyZQogIHJlbGVhc2VkIG9ubHkgb25jZSB0aGVpciB0aHJlYWQgaXMgZ29uZSksIHRo ZW4gdGhlIHF1ZXVlZCwgaW4tZmxpZ2h0CiAgYW5kIHN0aWxsIHBlbmRpbmcgcmVxdWVzdHMgYXJl IGNvbXBsZXRlZC4gVGhlIGRpc3BhdGNoZXIgaXMgbm8gbG9uZ2VyCiAgcGF1c2VkIGFuZCByZXN1 bWVkIHBlciBjbGllbnQsIHdoaWNoIHJlLXF1ZXVlZCBkaXNwYXRjaCB3b3JrIGR1cmluZwogIHRl YXJkb3duIGFuZCBpc3N1ZWQgaHlwZXJjYWxscyB3aGVuIEJBT19JT0NUTF9DUkVBVEVfRE0gZmFp bGVkLgotIElPX0NMSUVOVF9BVFRBQ0ggcHVibGlzaGVzIGEgcmVxdWVzdCBvbmx5IG9uY2UgaXQg aGFzIGJlZW4gY29waWVkIHRvCiAgdXNlcnNwYWNlLCBzbyBhIGNvbmN1cnJlbnQgSU9fUkVRVUVT VF9DT01QTEVURSBjYW5ub3QgY29tcGxldGUgaXQKICB0d2ljZS4KLSBpb2V2ZW50ZmRzIGZvbGxv dyBLVk06IHR3byBvZiB0aGVtIGNvbmZsaWN0IHdoZW4gYSB3cml0ZSBjb3VsZCBtYXRjaAogIGJv dGgsIHdoYXRldmVyIGV2ZW50ZmQgdGhleSB1c2U7IGEgcmVxdWVzdCBtYXRjaGVzIG9ubHkgdGhl IGV4YWN0CiAgbGVuZ3RoOyByZWFkcywgYW5kIHdyaXRlcyB0aGF0IG5vIGlvZXZlbnRmZCBtYXRj aGVzLCBhcmUgaGFuZGVkIHRvCiAgdGhlIFZNTSBpbnN0ZWFkIG9mIGJlaW5nIGFuc3dlcmVkIG9y IGRyb3BwZWQgYnkgdGhlIGtlcm5lbC4KLSBNYXRjaGluZyBhIHJlcXVlc3QgYWdhaW5zdCBhbiBJ L08gcmFuZ2UgcmVqZWN0cyB6ZXJvIG9yIG92ZXJzaXplZAogIGFjY2VzcyB3aWR0aHMgYW5kIHdy YXAtYXJvdW5kLgotIEFuIGlycWZkIGNvbnN1bWVzIHRoZSBldmVudGZkIGNvdW50ZXIgd2hlbiBz aWduYWxlZCwgYW5kIGRlYXNzaWduaW5nCiAgYW4gdW5rbm93biBpcnFmZCBmYWlscyB3aXRoIC1F Tk9FTlQuCi0gVGhlIEkvTyBkaXNwYXRjaGVyIGlzIDY0LWJpdCBvbmx5OiB0aGUgUmVtb3RlIEkv TyBmaWVsZHMgZGlkIG5vdCBmaXQKICB0aGUgUlYzMiBoeXBlcmNhbGwgcmVnaXN0ZXJzLgpBbHNv LCByZXF1ZXN0cyBhbHJlYWR5IHBlbmRpbmcgd2hlbiBhIGRldmljZSBtb2RlbCBpcyBjcmVhdGVk IChhCmZyb250ZW5kIHRoYXQgc3RhcnRlZCBmaXJzdCwgYSBWTU0gdGhhdCByZXN0YXJ0ZWQpIGFy ZSBwaWNrZWQgdXAgYXQKY3JlYXRpb24gaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBhIG5vdGlmaWNh dGlvbiB0aGF0IGRvZXMgbm90IGNvbWUKYWdhaW4uCgpDaGFuZ2VzIHNpbmNlIHY0Ci0tLS0tLS0t LS0tLS0tLS0KLSBCQU9fSU9DVExfQ1JFQVRFX0RNIHJlcXVpcmVzIENBUF9TWVNfUkFXSU8sIGlz IHJlZnVzZWQgdW5kZXIgbG9ja2Rvd24KICBhbmQgY2xhaW1zIGEgbm9uLVJBTSByZWdpb24gd2l0 aCByZXF1ZXN0X21lbV9yZWdpb24oKSwgbWlycm9yaW5nCiAgL2Rldi9tZW0uIFRoZSBub3RpZmlj YXRpb24gbGluZSBpcyBjaGVja2VkIGFnYWluc3QgdGhlIGludGVycnVwdAogIGNvbnRyb2xsZXIg YW5kIHJlcXVlc3RlZCBleGNsdXNpdmVseSwgYW5kIGl0cyBtYXBwaW5nIGlzIG5ldmVyCiAgZGlz cG9zZWQsIHNpbmNlIGl0IG1heSBiZSBzaGFyZWQgd2l0aCB3aG9ldmVyIG93bnMgdGhlIGxpbmUu Ci0gUmVxdWVzdHMgdGhhdCBjYW5ub3QgYmUgZGVsaXZlcmVkIGFyZSBjb21wbGV0ZWQgaW5zdGVh ZCBvZiBzdHJhbmRlZC4KICBUaGUgcmVxdWVzdHMgaGFuZGVkIHRvIHRoZSBWTU0gYXJlIHRyYWNr ZWQ6IGEgY29tcGxldGlvbiBvbmx5CiAgcHJvdmlkZXMgdGhlIHZhbHVlLCBhbmQgYSBWTU0gdGhh dCBleGl0cyBsZWF2ZXMgbm90aGluZyBiZWhpbmQuCi0gaW9ldmVudGZkcyBhbmQgaXJxZmRzIGFy ZSBib3VuZGVkIHBlciBkZXZpY2UgbW9kZWwsIGFuZCBhIGRldmljZQogIG1vZGVsIGlkIGlzIGJv dW5kIHRvIG9uZSBmaWxlIGRlc2NyaXB0b3IgYXQgYSB0aW1lLgotIFJJU0MtVjogdGhlIGh5cGVy Y2FsbCBzdGF0dXMgaXMgdGhlIFNCSSB2YWx1ZSAoYTEpLCBhbmQgYm90aCBkcml2ZXJzCiAgZGVw ZW5kIG9uIFJJU0NWX1NCSS4KLSBtbWFwIGdvZXMgdGhyb3VnaCAubW1hcF9wcmVwYXJlIGFuZCBv bmx5IGFsbG93cyBzaGFyZWQgbWFwcGluZ3M7CiAgLmNvbXBhdF9pb2N0bCBpcyBzZXQ7IHRoZSBJ UEMgZHJpdmVyIG5ldmVyIHVud2luZHMgYSByZWdpc3RlcmVkCiAgZGV2aWNlOyBiYW9faXBjc2ht ZW0uY2hhbm5lbHM9IGlzIGRvY3VtZW50ZWQgaW4ga2VybmVsLXBhcmFtZXRlcnMudHh0OwogIHJl YmFzZWQgb24gdjcuNC1yYzEuCgpDaGFuZ2VzIHNpbmNlIHYzCi0tLS0tLS0tLS0tLS0tLS0KLSBO byBkZXZpY2UgdHJlZSAoS3J6eXN6dG9mIEtvemxvd3NraSk6IHRoZSBJUEMgY2hhbm5lbHMgYXJl IGRlY2xhcmVkCiAgb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgYW5kLCBmb2xsb3dpbmcgZHJp dmVycy92aXJ0L2Fjcm4sIHRoZSBWTU0KICBjcmVhdGVzIGVhY2ggZGV2aWNlIG1vZGVsIHRocm91 Z2ggL2Rldi9iYW8gKEJBT19JT0NUTF9DUkVBVEVfRE0pLAogIHdoaWNoIHJldHVybnMgYSBwZXIt ZGV2aWNlLW1vZGVsIGZpbGUgZGVzY3JpcHRvci4KLSBObyBhcmNoaXRlY3R1cmUgY29kZSAoV2ls bCBEZWFjb24pOiB0aGUgaHlwZXJjYWxscyB1c2UKICBhcm1fc21jY2NfaHZjKCkvYXJtX3NtY2Nj XzFfMl9odmMoKSBhbmQgc2JpX2VjYWxsKCkgZnJvbSBhCiAgZHJpdmVyLXByaXZhdGUgaGVhZGVy LgotIFRoZSAiY29uc29saWRhdGUgdGhlIElQQyBoeXBlcmNhbGwgSUQiIHBhdGNoIGlzIGZvbGRl ZCBpbiAoQW5kcmV3CiAgSm9uZXMpLCBhbmQgdGhlIGlvY3RsIHR5cGUgaXMgMHhBNy4KClRlc3Rp bmcKLS0tLS0tLQpCdWlsdCBvbiB2Ny40LXJjMSB3aXRoIEdDQyAxNSAoVz0xKSBmb3IgYXJtNjQs IGFybSBhbmQgcmlzY3YsIGF0IGV2ZXJ5CmNvbW1pdCwgYW5kIHdpdGggY2xhbmcgMjEgKFc9MSkg Zm9yIGFybTY0IGFuZCByaXNjdi4gUnVuLXRpbWUgdGVzdGVkCnVuZGVyIEJhbyB2Mi4wLjAgb24g UUVNVSBhYXJjaDY0IHZpcnQgYW5kIFFFTVUgcmlzY3Y2NCB2aXJ0IHdpdGggdGhlCmJhby1kZW1v cyBkZW1vczogdGhlIElQQyBkcml2ZXIgZXhjaGFuZ2luZyBtZXNzYWdlcyBpbiBib3RoIGRpcmVj dGlvbnMKYmV0d2VlbiBhIExpbnV4IGd1ZXN0IGFuZCBhIEZyZWVSVE9TIGd1ZXN0LCBhbmQgdGhl IEkvTyBkaXNwYXRjaGVyIHdpdGgKYSBMaW51eCBiYWNrZW5kIHNlcnZpbmcgY29uc29sZSwgbmV0 d29yayBhbmQgYmxvY2sgZGV2aWNlIG1vZGVscyB0byBhCkZyZWVSVE9TIGd1ZXN0IGFuZCB0byBM aW51eCBndWVzdHMsIGluY2x1ZGluZyBraWxsaW5nIGFuZCByZXN0YXJ0aW5nCnRoZSBWTU1zLCBw bHVzIGEgdXNlcnNwYWNlIHRlc3Qgb2YgdGhlIC9kZXYvYmFvIGVycm9yIHBhdGhzIHJ1biBuZXh0 IHRvCnRoZSBsaXZlIFZNTXMsIHdoaWNoIG5vdyBhbHNvIHJhY2VzIGRldmljZS1tb2RlbCB0ZWFy ZG93biBhZ2FpbnN0CmV2ZW50ZmQgY2xvc2UgZm9yIHRoZSBpcnFmZHMuIFRoZSBhcm02NCBydW5z IHVzZWQgYSBsb2NrZGVwIGtlcm5lbC4KMzItYml0IEFybSBpcyBjb21waWxlLXRlc3RlZCBvbmx5 LgoKT3BlbiBpdGVtcwotLS0tLS0tLS0tCi0gUklTQy1WOiB0aGUgQmFvIFNCSSBleHRlbnNpb24g c3RpbGwgdXNlcyB0aGUgZXhwZXJpbWVudGFsIGV4dGVuc2lvbgogIHNwYWNlICgweDA4MDAwYmEw KSwgYW5kIHRoZSBSZW1vdGUgSS9PIGh5cGVyY2FsbCByZXR1cm5zIHRoZSByZXF1ZXN0CiAgaW4g YTItYTcsIHdoaWNoIGRvZXMgbm90IGZvbGxvdyB0aGUgU0JJIGNhbGxpbmcgY29udmVudGlvbiAo QW5kcmV3CiAgSm9uZXMsIHYyKS4gQ2hhbmdpbmcgdGhhdCBtZWFucyBhIGh5cGVydmlzb3IgQUJJ IGNoYW5nZSAoc3RhdHVzIGluCiAgYTAvYTEsIHJlcXVlc3QgdGhyb3VnaCBzaGFyZWQgbWVtb3J5 KTsgdGhlIFJJU0MtViBzdXBwb3J0IGlzCiAgZXhwZXJpbWVudGFsIHVudGlsIHRoZW4sIG9yIGl0 IGNhbiBiZSBzcGxpdCBvdXQgb2YgdGhpcyBzZXJpZXMgaWYKICBwcmVmZXJyZWQuCi0gQmFvIGRv ZXMgbm90IGltcGxlbWVudCB0aGUgU01DQ0MgdmVuZG9yLWh5cGVydmlzb3IgVUlEIGNhbGwsIHNv IHRoZQogIGRyaXZlcnMgY2Fubm90IGRldGVjdCB0aGUgaHlwZXJ2aXNvciB5ZXQ7IGFkZGluZyBp dCBpcyBwbGFubmVkIG9uIHRoZQogIGh5cGVydmlzb3Igc2lkZS4KLSBUaGUgbm90aWZpY2F0aW9u IGxpbmUgaXMgYSBsaW5lIG9mIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGUgZGV2aWNlCiAg dHJlZSdzIHJvb3Qgbm9kZSBwb2ludHMgYXQgdGhyb3VnaCBpbnRlcnJ1cHQtcGFyZW50OyBhIGd1 ZXN0IHdob3NlCiAgcm9vdCBub2RlIGhhcyBub25lIGNhbm5vdCB1c2UgdGhlIEkvTyBkaXNwYXRj aGVyIHlldC4KCnY2OiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvY292ZXIuMTc5NDU4OTYz OS5naXQuanBlaXhvdG9Ab3N5eC50ZWNoLwp2NTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxs L2NvdmVyLjE3OTQwMzgzOTAuZ2l0LmpwZWl4b3RvQG9zeXgudGVjaC8KdjQ6IGh0dHBzOi8vbG9y ZS5rZXJuZWwub3JnL2FsbC9jb3Zlci4xNzkwMzU3NzM1LmdpdC5qcGVpeG90b0Bvc3l4LnRlY2gv CnYzOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvY292ZXIuMTc4NjAxMDUxMi5naXQuanBl aXhvdG9Ab3N5eC50ZWNoLwoKSm/Do28gUGVpeG90byAoMyk6CiAgdmlydDogYmFvOiBhZGQgSVBD IHNoYXJlZC1tZW1vcnkgZHJpdmVyCiAgdmlydDogYmFvOiBhZGQgSS9PIGRpc3BhdGNoZXIgZHJp dmVyCiAgTUFJTlRBSU5FUlM6IGFkZCBCYW8gaHlwZXJ2aXNvciBlbnRyeQoKIC4uLi9hZG1pbi1n dWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQgICAgICAgICB8ICAxNSArCiAuLi4vdXNlcnNwYWNl LWFwaS9pb2N0bC9pb2N0bC1udW1iZXIucnN0ICAgICAgfCAgIDIgKwogTUFJTlRBSU5FUlMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIGRyaXZlcnMvdmlydC9LY29u ZmlnICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL3ZpcnQvTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy92aXJ0L2Jhby9LY29u ZmlnICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMvdmlydC9iYW8vTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBkcml2ZXJzL3ZpcnQvYmFvL2Jhb19oeXBl cmNhbGwuaCAgICAgICAgICAgICAgfCAyMTAgKysrKysrKysKIGRyaXZlcnMvdmlydC9iYW8vaW8t ZGlzcGF0Y2hlci9LY29uZmlnICAgICAgICB8ICAyMCArCiBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRp c3BhdGNoZXIvTWFrZWZpbGUgICAgICAgfCAgIDQgKwogZHJpdmVycy92aXJ0L2Jhby9pby1kaXNw YXRjaGVyL2Jhb19kcnYuaCAgICAgIHwgNDI2ICsrKysrKysrKysrKysrKysKIGRyaXZlcnMvdmly dC9iYW8vaW8tZGlzcGF0Y2hlci9kbS5jICAgICAgICAgICB8IDQ2MCArKysrKysrKysrKysrKysr KwogZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2RyaXZlci5jICAgICAgIHwgIDcxICsr KwogZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2ludGMuYyAgICAgICAgIHwgMTg2ICsr KysrKysKIGRyaXZlcnMvdmlydC9iYW8vaW8tZGlzcGF0Y2hlci9pb19jbGllbnQuYyAgICB8IDQ3 NSArKysrKysrKysrKysrKysrKysKIC4uLi92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2lvX2Rpc3Bh dGNoZXIuYyAgICB8IDE4NCArKysrKysrCiBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIv aW9ldmVudGZkLmMgICAgfCAzNTkgKysrKysrKysrKysrKwogZHJpdmVycy92aXJ0L2Jhby9pby1k aXNwYXRjaGVyL2lycWZkLmMgICAgICAgIHwgMzUwICsrKysrKysrKysrKysKIGRyaXZlcnMvdmly dC9iYW8vaXBjc2htZW0vS2NvbmZpZyAgICAgICAgICAgICB8ICAxNiArCiBkcml2ZXJzL3ZpcnQv YmFvL2lwY3NobWVtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDMgKwogZHJpdmVycy92aXJ0L2Jh by9pcGNzaG1lbS9pcGNzaG1lbS5jICAgICAgICAgIHwgNDIxICsrKysrKysrKysrKysrKysKIGlu Y2x1ZGUvdWFwaS9saW51eC9iYW8uaCAgICAgICAgICAgICAgICAgICAgICB8IDEyNiArKysrKwog MjIgZmlsZXMgY2hhbmdlZCwgMzM0OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy92aXJ0L2Jhby9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0 L2Jhby9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlydC9iYW8vYmFvX2h5 cGVyY2FsbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRj aGVyL0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3Bh dGNoZXIvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRp c3BhdGNoZXIvYmFvX2Rydi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9p by1kaXNwYXRjaGVyL2RtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lv LWRpc3BhdGNoZXIvZHJpdmVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFv L2lvLWRpc3BhdGNoZXIvaW50Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jh by9pby1kaXNwYXRjaGVyL2lvX2NsaWVudC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92 aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2lvX2Rpc3BhdGNoZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvdmlydC9iYW8vaW8tZGlzcGF0Y2hlci9pb2V2ZW50ZmQuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdmlydC9iYW8vaW8tZGlzcGF0Y2hlci9pcnFmZC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pcGNzaG1lbS9LY29uZmlnCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pcGNzaG1lbS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vaXBjc2htZW0uYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGluY2x1ZGUvdWFwaS9saW51eC9iYW8uaAoKCmJhc2UtY29tbWl0OiA2NjI4ZTdkNGM2YjI1 YzhkMThmMTM0NWUzYTIwZDIxODI5YWFlN2U0Ci0tIAoyLjUzLjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==