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=1794038827; b=170n2TRV/SSbwsDi1LkJ+/HLzcTeSB4Las53khldsVOKJtmjhi8pGmVtC+xL+IC6QenK rV48QaNd5dbB/Ko6q8nwD3oLVqweu9LOILWODNUQ9jOFaeZjb5xGiR8xjY/twAsncyX9a wkVOpI/XnhczdeL5M7bR+BFvJAt6xj1r4bj+i5gohkHNHG+rqOu3V9CrFdwHlT6xL4X8t SwswxIS2bsJDdNWkjj4/Qml0Mn9499s6VgfDw/eErmdNrAuduPiqpAhgdFuh1SeQIEibj TRKN9ClfKyWPrfcCr6fm0YEvu9zQTeu4Eyoow9rqKZK77Wf/WvUa9dY7yHTIiiChK/A== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794038827; 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=A1W69Jj0cuHW+VrCPTPexg9wdW+N2t/lSjby8/XmkVs=; b=ncsya5O/bcRRw6eGujxcMtYj2G9bg3HBLUtjzmpR/0StEin22WJZyp06R7N6kyHxdZhL pZCnwv+XsfGVlEMqTm1b8YZ+kiJFu6BF/cpVl6+HK5xTTlGAOB7kDNHd1CtZJhla1SrAF UACJqYUiQjWkcF1iwSAjGFs74eJvgZfaF4WgFLwN4VpeS2CbXkshQ9ebdbSap9bIk2dfU 5ZKnBgy8EPOCEsfu7kGiEac//53Ws50En3H8zUYdkwwiLYluDX/8vWbrhtwWW7lRLXI36 Hfeqtb+vMIBVbOv2RKeXYQaifgKsUOAkN5je9JzgVMbYnZtQ7hBVQ3uTF66E20C10RA== 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=GJYkm0vh; 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 D245A606A32C for ; Sat, 7 Nov 2026 08:07:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org D245A606A32C 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) header.d=osyx-tech.20260707.gappssmtp.com header.i=@osyx-tech.20260707.gappssmtp.com header.a=rsa-sha256 header.s=20260707 header.b=GJYkm0vh Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4a20a37703bso9430035e9.1 for ; Sat, 07 Nov 2026 00:07:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osyx-tech.20260707.gappssmtp.com; s=20260707; t=1794038825; x=1794643625; 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=A1W69Jj0cuHW+VrCPTPexg9wdW+N2t/lSjby8/XmkVs=; b=GJYkm0vhpmdsKFxr0ra7tom/kgIOFjaOfs+XZq0RJJwefUpq9PAcUah2uw1VjEA8Oa Rb3XpN4bxFrikIgmCBTJpFKLyUDR+5KvLPUPYy1QwSZ7pStZUXTgpqy0Qprmckx0qXFj MnXujEsFG+zTNjPdw1B7aLHfxbolGEoUngEix0D7RxlvD2YOB1ENs486OFs4dsYKHRS3 4Ue0aL9aLHQlKLdYLdCIFQJh4QLQXGYxtAx0LhGuqZzcVBDre/CeiymzgYlOBdwll6Wj 8AcoClMOMbzMvD5pVmCx7EZLKU/IwWoK8new3NbPgWpXqgpY6yq6i6KUdY0KsORefsG2 r6eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794038825; x=1794643625; 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=A1W69Jj0cuHW+VrCPTPexg9wdW+N2t/lSjby8/XmkVs=; b=OP/Vjam/RTmsPmFvT77Y6T7nhZk9nPL0KcZuQDpwS0VMBySJvLn4BTtPriAP/AS0e2 tHan1h549B27DAcMnVItQ8FCkqkJO3hrvBPc0c2PjtTRSfYukcJmdZAicVomgIO7zRmk 3SUnPS62dHQw1fiRKcLhndgV25q1gaYSgRpIxM1m4zraL2TVSHnTxXXzPxGtQcdMv4my NTM+Gm2g35tMKFSOASbCa/0jQh7Vd45T5wOb7mx/+EN2uljgfvAKc+LhQoEfc7JAOPJf zJ7y9Knb/vnbw/JjlY6vTf4UbGt9o8oENYIkW7p0J6OtgXqzkV8SGNbqo8ZEeLUwfTyQ zirg== X-Forwarded-Encrypted: i=1; AKwUvBxcVPI02pO5pHobIxcJGylEL1kqHGtNDLASg9hniZTRg2aswDVyoeD6f0lkiZLudW/v69Nb/OHPupwC@vger.kernel.org X-Gm-Message-State: APuU4Z9rVeHSCGagtldJ5D4c+hjg+p+DUQ2pTqZcqZybc3JH6ZHCtIOE 4HfFv86IAhSRgwFw9B2QuZQzKO3uFeR7LO8fRKne5kTnwWBsR+DyXjUvHhV4BZJVPiwRVolKOl4 vjsguT7d8 X-Gm-Gg: AYBFou0WLAs9duvCb0IPh5BdJ5o32+Tz5vuUbgzVpxVjsq276Bw4CBhzYwuzMa1M47O KRzL4bCwdh4GwkksXFBJIgVLPAqDwD7OVeBdhGHfpOIBcBE3qcvUrtTLZK+mlBXMGrNaa36uV58 5d9cUqpa8aWXumbKWQ6RTeYD9+09emqJSDRqWrmA4+4cfUlOMqA6hjRitJQ8H6SR5k/Ewx6Btov iDrcb8EngUlfjvDuBZaUfr3SKOvGeqrZ5ysElYbG1PXEK0gZkMZWE3DwTPjZZt9BpkpIgYZ4gkR Cx/rpsQSrGAaDLXbUrkWaVmbivfP+cY1N0wJ6EoX73AcOpkjOitWZNxxOp8H+FnA5i9c8YLoPb3 W5lza/ei6WVmUeuNChoquCUp/e1ogBaBDvUV3J+flsLyVZW8o+iQJ1r960IQJ2B/BTy87DZ2eC3 p4ZaJKq/uBQtJMwPTXnu0uKLapgTTYGzJVqEtevOHKq6H0yJ82bJbXmsBRf8jahGRK1GAm6eG7+ cISTfPPEV1ZZ85sKj9aFxcBm/z2BLo+Lcsy6ZPuoUaLFGaB6Dsu+fjVzqhLKANdtQK2ZjZ8HRCA lia9P5YYpjYVL/vROOrupCkskrNdG66VNRpEf5AUV2+iQ+ZxxP0= X-Received: by 2002:a05:600c:310e:b0:4af:9cae:df63 with SMTP id 5b1f17b1804b1-4b6dfbac4c3mr81654205e9.31.1794038825053; Sat, 07 Nov 2026 00:07:05 -0800 (PST) Received: from jp-linux.tailbfef0e.ts.net ([2001:8a0:f59c:a900:ea06:fa16:f0a0:9d64]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4b7e327a652sm43927455e9.7.2026.11.07.00.07.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Nov 2026 00:07:04 -0800 (PST) From: =?UTF-8?q?Jo=C3=A3o=20Peixoto?= To: gregkh@linuxfoundation.org, will@kernel.org Cc: catalin.marinas@arm.com, andrew.jones@oss.qualcomm.com, 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 v5 0/3] virt: bao: add Bao hypervisor IPC and I/O dispatcher drivers Date: Sat, 7 Nov 2026 08:06:49 +0000 Message-ID: X-Mailer: git-send-email 2.53.0 X-Mailing-List: devicetree@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 v4 ---------------- All findings of the Sashiko review of v4 are addressed: - creating a device model (BAO_IOCTL_CREATE_DM) requires CAP_SYS_RAWIO, is refused under lockdown, rejects shared-memory regions overlapping System RAM and claims the region with request_mem_region(), mirroring /dev/mem; - the notification line is requested exclusively and is checked against the sources the interrupt controller declares before it is mapped, since irqchip drivers trust the specifiers they are given (a PLIC line above riscv,ndev wrote out of bounds). Its mapping is not disposed when request_irq() fails, though: irq_create_of_mapping() returns the existing mapping of a line that is already mapped without counting its users, so disposing it would free the interrupt of whoever owns the line. A leftover mapping is reused when the line is mapped again; - a request that cannot be delivered is completed and fetching goes on, so pending requests are no longer stranded; - the ioeventfds and irqfds of a device model are bounded (256 each) and their flags validated; requests still queued when a client is destroyed are completed back to the hypervisor; - the IPC driver registers its devices only once every channel has been parsed and mapped, and never unwinds a device it has registered. Other changes: - the requests handed to the VMM are tracked: a completion must name one of them and only provides its value, so userspace can no longer pick the hypercall operation (an ASK lost a request), and the requests a VMM leaves behind when it exits are completed on release; - a device model id can only be bound to one file descriptor at a time; - RISC-V: the hypercall status is taken from the SBI value (a1), where Bao returns it, not from the SBI error (a0), which is always 0; a failed hypercall was taken as a success. Both drivers depend on RISCV_SBI, so M-mode kernels no longer fail to build them; - mmap goes through .mmap_prepare and only shared mappings are allowed; .compat_ioctl is set, the structures having the same layout for 32-bit userspace; DM_GET_INFO and IO_CLIENT_ATTACH are _IOR; the ioctl table reserves 0xA7 00-0F; - bao_ipcshmem.channels= is documented in kernel-parameters.txt; - rebased on v7.4-rc1. Changes since v3 ---------------- The two design comments on v3 changed the shape of the series, which went from six patches to three. - No device tree (Krzysztof Kozlowski): both bindings and the "bao" vendor prefix are dropped. The IPC channels are a software contract between the hypervisor and the guest and are declared on the kernel command line (bao_ipcshmem.channels=...). The set of device models a backend serves is a contract between the hypervisor and the VMM, so, following drivers/virt/acrn, the I/O dispatcher exposes a single /dev/bao control device and the VMM creates each device model with BAO_IOCTL_CREATE_DM (shared-memory region + notification line), which returns a per-DM file descriptor; the DM lives as long as the descriptor. The notification line is resolved against the device tree's root interrupt parent, like any device's interrupt. - No architecture code (Will Deacon): the hypercall helpers live in drivers/virt/bao/bao_hypercall.h and use arm_smccc_hvc() for the IPC hypercall and, because the Remote I/O hypercall returns the request in x1-x6, the SMCCC v1.2 arm_smccc_1_2_hvc(). RISC-V uses sbi_ecall() for IPC and a local ecall for Remote I/O (see open items). 32-bit Arm has no SMCCC v1.2 helper, so the I/O dispatcher is limited to arm64 and RISC-V for now; the IPC driver still supports 32-bit Arm through SMCCC v1.1 (HAVE_ARM_SMCCC). - The standalone "consolidate the IPC hypercall ID" patch is folded into the driver patches (Andrew Jones). - All findings of the Sashiko review of v3 are addressed. Details are in the per-patch changelogs. - The ioctl type is 0xA7: 7.3-rc1 registered 0xA6 for memory allocation profiling. 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 (privilege, region and line checks, duplicate ids, limits, completions) run next to the live VMMs. 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. 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 | 205 ++++++++ drivers/virt/bao/io-dispatcher/Kconfig | 20 + drivers/virt/bao/io-dispatcher/Makefile | 4 + drivers/virt/bao/io-dispatcher/bao_drv.h | 401 ++++++++++++++++ drivers/virt/bao/io-dispatcher/dm.c | 438 ++++++++++++++++++ drivers/virt/bao/io-dispatcher/driver.c | 71 +++ drivers/virt/bao/io-dispatcher/intc.c | 186 ++++++++ drivers/virt/bao/io-dispatcher/io_client.c | 430 +++++++++++++++++ .../virt/bao/io-dispatcher/io_dispatcher.c | 173 +++++++ drivers/virt/bao/io-dispatcher/ioeventfd.c | 350 ++++++++++++++ drivers/virt/bao/io-dispatcher/irqfd.c | 321 +++++++++++++ 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, 3202 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 9B74B606A332 for ; Sat, 7 Nov 2026 08:07:29 +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=jZ/RZX/9; 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=l7KEWUp7 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=fWJPkGsU38LSAfVS2d1wnpjlU+9gwX710YSdOFuMUQE=; b=jZ/RZX/9yAarZnU+vgyAHFNtJB V93bx87MatrslPoqEpKhC6SO9m0RSvBMddspWSbUsldbpyQ0I4+48J8huaxdDPdVch0iv1pDv4NSi Nyhiye/rdYRRhgNCEcDqSqOwiZ+Y6wzTz6/HBQWxBPRmFoPbp/DkFXpN9cO8nEyurKSht7Y3nZB7j brpkmu/pL28pbOXi8JkPwzwJdeKugksrh1oJbMFsTsqLyleHJSQpNO5nVsQotLbGilFR4ehnjqyR/ LOpqxqt1SPQKm5gBVla8Ig8mMVZ0+s8pwALPOs6ATn4Rb/JLgdiWWg+z1JuoU/qTfL85qIuqUHobg VrH2HFLA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPbSC-0000000ELnV-0k78; Sat, 07 Nov 2026 08:07:12 +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 1xPbS8-0000000ELm7-2hHg for linux-riscv@lists.infradead.org; Sat, 07 Nov 2026 08:07:10 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4ac95761c85so9294995e9.2 for ; Sat, 07 Nov 2026 00:07:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osyx-tech.20260707.gappssmtp.com; s=20260707; t=1794038825; x=1794643625; 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=A1W69Jj0cuHW+VrCPTPexg9wdW+N2t/lSjby8/XmkVs=; b=l7KEWUp73vRvPr67IK1BS++BTna/I5sUatakoCg591woUv+dWdfUtpBLwzs1RWLLdr KtM45mC9cg62/EuNgKS9hyNLx+IS/qoLx0ihCsm/W0DET1oqoByrzvASza0lj04MlMsR 3gW0mP7cVhmqkc99RH7w4fgn4lAMiUAx9cgSYAiz581ewvev6DxK1b/74N7+u0Fy5dYx x6MLG3ctQrWezHgypRNH7NftA1UuSCEek0JwyAnWz85dvGbEjbVpPFWyl1rSHyVZCfGg grTjhMk+mA+B8rdAg/UPalQNxx6KnF438jZYab9pklYnIrAELorrrIo+96NrFL48wiIY vetQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794038825; x=1794643625; 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=A1W69Jj0cuHW+VrCPTPexg9wdW+N2t/lSjby8/XmkVs=; b=PO9J6QnNsTykSOaCEd21IWRCz1zdXYVT7nKBJswgk1cnFKGSYNvXhpazoe6iG+N6CK 76i8z69YipvYtJGa/Fw9fb+XYClsuul9w0Y6h8SDiMj54S1fb7jJfAbN9Qqv7M+YzGzh y60SBz9kKwr+VyFgwD37l/QJZBFZPS3TtCs1DF9WJDaxSNAhQGQTxqju1HM2/7BuCk+T eksODIO/ggn6N6TDt5X93IGXgYgrihJFlyvWDMnh0SzR8qrbtLIjZl43MdIcz0n0jPAo yetV/sNHWM5i1Ecjmg7E94QKBseqio4NjHcbGVnFXFAoze+Sh55fAc9Pficxt/1oFeK0 V26A== X-Forwarded-Encrypted: i=1; AKwUvByRIuCC9S3NEZ/6dHlVJsX0huFWQhS2s+bH1/uiRogv12CY5lCn81FUtLpyn9c89vjhhn1Pm8h3sPQVPA==@lists.infradead.org X-Gm-Message-State: APuU4Z+d6H3/+yRNzyhAhnibW6t2bCGQDe+3ZAilbavMA4G3pOeSsSKO o9R1svD+7CMuYysjiMrQB655iwfGxxchQmTjIQzr9E/wHpovvam03b+hKAuxp+YGD2Ye X-Gm-Gg: AYBFou1cVDr/vMCG8KxqEdxwrK5JdwZCtxAfJ+kj4QkSX6f/WhqzvDa4NpIeaAl9mBS 3N333r0aODWISpC8LKesZZ5/HE6v8uh+vjn0SNb/rUvj8YUiCwFKBbDaO1GqxgQvvwSZrMB8kp/ AQy2oXES+8jYlARQ/V5JIV6h2ObgfK+Lhm66ogi0GFTh6Vvgh6ZHkaIzEymoEQue+V5E5bYuSy2 ORFczWXPsaSkw8rSbpIiVScXavtylFyqQtdmayuK2Z2M05ucvz5bPR7Qe/IpWpdX2mQVFiPK8ZK gdJXJcukjgy5dMFEKNKfZI9vv2LKEBDa6lJMKOhi5sxfsE3VWmaLFYntCRWyX7SOTij1FmfYoyS hmBD+9H1C10mrY4Zg1gaa/xh9LB8nbmVKbvHjYbq8jnlzUiOwmKH1yKJ/atj+GUE6BVWeCSc0Qs aVzP3jf0pgua0H4kRJntxzGxBRu8DpzhwJnq79XCYJVHlNdHDcr0OlNcHrhgIc3Y2HnFWR5wOwI JdsabmYHG6NceL+Z8U7657wd5zoBAgI8lnRo4mFH+nrk+5RTDVJq5/8EOoLxMXHcsPQNPUskjpk wtM7i1y8nWx4Q8DeI3PkT0DAodeam9szVY7fGRS3+umHCmGlJI0= X-Received: by 2002:a05:600c:310e:b0:4af:9cae:df63 with SMTP id 5b1f17b1804b1-4b6dfbac4c3mr81654205e9.31.1794038825053; Sat, 07 Nov 2026 00:07:05 -0800 (PST) Received: from jp-linux.tailbfef0e.ts.net ([2001:8a0:f59c:a900:ea06:fa16:f0a0:9d64]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4b7e327a652sm43927455e9.7.2026.11.07.00.07.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Nov 2026 00:07:04 -0800 (PST) From: =?UTF-8?q?Jo=C3=A3o=20Peixoto?= To: gregkh@linuxfoundation.org, will@kernel.org Cc: catalin.marinas@arm.com, andrew.jones@oss.qualcomm.com, 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 v5 0/3] virt: bao: add Bao hypervisor IPC and I/O dispatcher drivers Date: Sat, 7 Nov 2026 08:06:49 +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-20261107_000709_006297_AE35B999 X-CRM114-Status: GOOD ( 28.71 ) 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 ZXMgc2luY2UgdjQKLS0tLS0tLS0tLS0tLS0tLQpBbGwgZmluZGluZ3Mgb2YgdGhlIFNhc2hpa28g cmV2aWV3IG9mIHY0IGFyZSBhZGRyZXNzZWQ6Ci0gY3JlYXRpbmcgYSBkZXZpY2UgbW9kZWwgKEJB T19JT0NUTF9DUkVBVEVfRE0pIHJlcXVpcmVzIENBUF9TWVNfUkFXSU8sCiAgaXMgcmVmdXNlZCB1 bmRlciBsb2NrZG93biwgcmVqZWN0cyBzaGFyZWQtbWVtb3J5IHJlZ2lvbnMgb3ZlcmxhcHBpbmcK ICBTeXN0ZW0gUkFNIGFuZCBjbGFpbXMgdGhlIHJlZ2lvbiB3aXRoIHJlcXVlc3RfbWVtX3JlZ2lv bigpLCBtaXJyb3JpbmcKICAvZGV2L21lbTsKLSB0aGUgbm90aWZpY2F0aW9uIGxpbmUgaXMgcmVx dWVzdGVkIGV4Y2x1c2l2ZWx5IGFuZCBpcyBjaGVja2VkIGFnYWluc3QKICB0aGUgc291cmNlcyB0 aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgZGVjbGFyZXMgYmVmb3JlIGl0IGlzIG1hcHBlZCwKICBz aW5jZSBpcnFjaGlwIGRyaXZlcnMgdHJ1c3QgdGhlIHNwZWNpZmllcnMgdGhleSBhcmUgZ2l2ZW4g KGEgUExJQwogIGxpbmUgYWJvdmUgcmlzY3YsbmRldiB3cm90ZSBvdXQgb2YgYm91bmRzKS4gSXRz IG1hcHBpbmcgaXMgbm90CiAgZGlzcG9zZWQgd2hlbiByZXF1ZXN0X2lycSgpIGZhaWxzLCB0aG91 Z2g6IGlycV9jcmVhdGVfb2ZfbWFwcGluZygpCiAgcmV0dXJucyB0aGUgZXhpc3RpbmcgbWFwcGlu ZyBvZiBhIGxpbmUgdGhhdCBpcyBhbHJlYWR5IG1hcHBlZCB3aXRob3V0CiAgY291bnRpbmcgaXRz IHVzZXJzLCBzbyBkaXNwb3NpbmcgaXQgd291bGQgZnJlZSB0aGUgaW50ZXJydXB0IG9mCiAgd2hv ZXZlciBvd25zIHRoZSBsaW5lLiBBIGxlZnRvdmVyIG1hcHBpbmcgaXMgcmV1c2VkIHdoZW4gdGhl IGxpbmUgaXMKICBtYXBwZWQgYWdhaW47Ci0gYSByZXF1ZXN0IHRoYXQgY2Fubm90IGJlIGRlbGl2 ZXJlZCBpcyBjb21wbGV0ZWQgYW5kIGZldGNoaW5nIGdvZXMgb24sCiAgc28gcGVuZGluZyByZXF1 ZXN0cyBhcmUgbm8gbG9uZ2VyIHN0cmFuZGVkOwotIHRoZSBpb2V2ZW50ZmRzIGFuZCBpcnFmZHMg b2YgYSBkZXZpY2UgbW9kZWwgYXJlIGJvdW5kZWQgKDI1NiBlYWNoKSBhbmQKICB0aGVpciBmbGFn cyB2YWxpZGF0ZWQ7IHJlcXVlc3RzIHN0aWxsIHF1ZXVlZCB3aGVuIGEgY2xpZW50IGlzCiAgZGVz dHJveWVkIGFyZSBjb21wbGV0ZWQgYmFjayB0byB0aGUgaHlwZXJ2aXNvcjsKLSB0aGUgSVBDIGRy aXZlciByZWdpc3RlcnMgaXRzIGRldmljZXMgb25seSBvbmNlIGV2ZXJ5IGNoYW5uZWwgaGFzIGJl ZW4KICBwYXJzZWQgYW5kIG1hcHBlZCwgYW5kIG5ldmVyIHVud2luZHMgYSBkZXZpY2UgaXQgaGFz IHJlZ2lzdGVyZWQuCgpPdGhlciBjaGFuZ2VzOgotIHRoZSByZXF1ZXN0cyBoYW5kZWQgdG8gdGhl IFZNTSBhcmUgdHJhY2tlZDogYSBjb21wbGV0aW9uIG11c3QgbmFtZSBvbmUKICBvZiB0aGVtIGFu ZCBvbmx5IHByb3ZpZGVzIGl0cyB2YWx1ZSwgc28gdXNlcnNwYWNlIGNhbiBubyBsb25nZXIgcGlj awogIHRoZSBoeXBlcmNhbGwgb3BlcmF0aW9uIChhbiBBU0sgbG9zdCBhIHJlcXVlc3QpLCBhbmQg dGhlIHJlcXVlc3RzIGEKICBWTU0gbGVhdmVzIGJlaGluZCB3aGVuIGl0IGV4aXRzIGFyZSBjb21w bGV0ZWQgb24gcmVsZWFzZTsKLSBhIGRldmljZSBtb2RlbCBpZCBjYW4gb25seSBiZSBib3VuZCB0 byBvbmUgZmlsZSBkZXNjcmlwdG9yIGF0IGEgdGltZTsKLSBSSVNDLVY6IHRoZSBoeXBlcmNhbGwg c3RhdHVzIGlzIHRha2VuIGZyb20gdGhlIFNCSSB2YWx1ZSAoYTEpLCB3aGVyZQogIEJhbyByZXR1 cm5zIGl0LCBub3QgZnJvbSB0aGUgU0JJIGVycm9yIChhMCksIHdoaWNoIGlzIGFsd2F5cyAwOyBh CiAgZmFpbGVkIGh5cGVyY2FsbCB3YXMgdGFrZW4gYXMgYSBzdWNjZXNzLiBCb3RoIGRyaXZlcnMg ZGVwZW5kIG9uCiAgUklTQ1ZfU0JJLCBzbyBNLW1vZGUga2VybmVscyBubyBsb25nZXIgZmFpbCB0 byBidWlsZCB0aGVtOwotIG1tYXAgZ29lcyB0aHJvdWdoIC5tbWFwX3ByZXBhcmUgYW5kIG9ubHkg c2hhcmVkIG1hcHBpbmdzIGFyZSBhbGxvd2VkOwogIC5jb21wYXRfaW9jdGwgaXMgc2V0LCB0aGUg c3RydWN0dXJlcyBoYXZpbmcgdGhlIHNhbWUgbGF5b3V0IGZvciAzMi1iaXQKICB1c2Vyc3BhY2U7 IERNX0dFVF9JTkZPIGFuZCBJT19DTElFTlRfQVRUQUNIIGFyZSBfSU9SOyB0aGUgaW9jdGwgdGFi bGUKICByZXNlcnZlcyAweEE3IDAwLTBGOwotIGJhb19pcGNzaG1lbS5jaGFubmVscz0gaXMgZG9j dW1lbnRlZCBpbiBrZXJuZWwtcGFyYW1ldGVycy50eHQ7Ci0gcmViYXNlZCBvbiB2Ny40LXJjMS4K CkNoYW5nZXMgc2luY2UgdjMKLS0tLS0tLS0tLS0tLS0tLQpUaGUgdHdvIGRlc2lnbiBjb21tZW50 cyBvbiB2MyBjaGFuZ2VkIHRoZSBzaGFwZSBvZiB0aGUgc2VyaWVzLCB3aGljaAp3ZW50IGZyb20g c2l4IHBhdGNoZXMgdG8gdGhyZWUuCgotIE5vIGRldmljZSB0cmVlIChLcnp5c3p0b2YgS296bG93 c2tpKTogYm90aCBiaW5kaW5ncyBhbmQgdGhlICJiYW8iCiAgdmVuZG9yIHByZWZpeCBhcmUgZHJv cHBlZC4gVGhlIElQQyBjaGFubmVscyBhcmUgYSBzb2Z0d2FyZSBjb250cmFjdAogIGJldHdlZW4g dGhlIGh5cGVydmlzb3IgYW5kIHRoZSBndWVzdCBhbmQgYXJlIGRlY2xhcmVkIG9uIHRoZSBrZXJu ZWwKICBjb21tYW5kIGxpbmUgKGJhb19pcGNzaG1lbS5jaGFubmVscz0uLi4pLiBUaGUgc2V0IG9m IGRldmljZSBtb2RlbHMgYQogIGJhY2tlbmQgc2VydmVzIGlzIGEgY29udHJhY3QgYmV0d2VlbiB0 aGUgaHlwZXJ2aXNvciBhbmQgdGhlIFZNTSwgc28sCiAgZm9sbG93aW5nIGRyaXZlcnMvdmlydC9h Y3JuLCB0aGUgSS9PIGRpc3BhdGNoZXIgZXhwb3NlcyBhIHNpbmdsZQogIC9kZXYvYmFvIGNvbnRy b2wgZGV2aWNlIGFuZCB0aGUgVk1NIGNyZWF0ZXMgZWFjaCBkZXZpY2UgbW9kZWwgd2l0aAogIEJB T19JT0NUTF9DUkVBVEVfRE0gKHNoYXJlZC1tZW1vcnkgcmVnaW9uICsgbm90aWZpY2F0aW9uIGxp bmUpLCB3aGljaAogIHJldHVybnMgYSBwZXItRE0gZmlsZSBkZXNjcmlwdG9yOyB0aGUgRE0gbGl2 ZXMgYXMgbG9uZyBhcyB0aGUKICBkZXNjcmlwdG9yLiBUaGUgbm90aWZpY2F0aW9uIGxpbmUgaXMg cmVzb2x2ZWQgYWdhaW5zdCB0aGUgZGV2aWNlCiAgdHJlZSdzIHJvb3QgaW50ZXJydXB0IHBhcmVu dCwgbGlrZSBhbnkgZGV2aWNlJ3MgaW50ZXJydXB0LgotIE5vIGFyY2hpdGVjdHVyZSBjb2RlIChX aWxsIERlYWNvbik6IHRoZSBoeXBlcmNhbGwgaGVscGVycyBsaXZlIGluCiAgZHJpdmVycy92aXJ0 L2Jhby9iYW9faHlwZXJjYWxsLmggYW5kIHVzZSBhcm1fc21jY2NfaHZjKCkgZm9yIHRoZSBJUEMK ICBoeXBlcmNhbGwgYW5kLCBiZWNhdXNlIHRoZSBSZW1vdGUgSS9PIGh5cGVyY2FsbCByZXR1cm5z IHRoZSByZXF1ZXN0CiAgaW4geDEteDYsIHRoZSBTTUNDQyB2MS4yIGFybV9zbWNjY18xXzJfaHZj KCkuIFJJU0MtViB1c2VzIHNiaV9lY2FsbCgpCiAgZm9yIElQQyBhbmQgYSBsb2NhbCBlY2FsbCBm b3IgUmVtb3RlIEkvTyAoc2VlIG9wZW4gaXRlbXMpLiAzMi1iaXQgQXJtCiAgaGFzIG5vIFNNQ0ND IHYxLjIgaGVscGVyLCBzbyB0aGUgSS9PIGRpc3BhdGNoZXIgaXMgbGltaXRlZCB0byBhcm02NAog IGFuZCBSSVNDLVYgZm9yIG5vdzsgdGhlIElQQyBkcml2ZXIgc3RpbGwgc3VwcG9ydHMgMzItYml0 IEFybSB0aHJvdWdoCiAgU01DQ0MgdjEuMSAoSEFWRV9BUk1fU01DQ0MpLgotIFRoZSBzdGFuZGFs b25lICJjb25zb2xpZGF0ZSB0aGUgSVBDIGh5cGVyY2FsbCBJRCIgcGF0Y2ggaXMgZm9sZGVkIGlu dG8KICB0aGUgZHJpdmVyIHBhdGNoZXMgKEFuZHJldyBKb25lcykuCi0gQWxsIGZpbmRpbmdzIG9m IHRoZSBTYXNoaWtvIHJldmlldyBvZiB2MyBhcmUgYWRkcmVzc2VkLiBEZXRhaWxzIGFyZSBpbgog IHRoZSBwZXItcGF0Y2ggY2hhbmdlbG9ncy4KLSBUaGUgaW9jdGwgdHlwZSBpcyAweEE3OiA3LjMt cmMxIHJlZ2lzdGVyZWQgMHhBNiBmb3IgbWVtb3J5IGFsbG9jYXRpb24KICBwcm9maWxpbmcuCgpU ZXN0aW5nCi0tLS0tLS0KQnVpbHQgb24gdjcuNC1yYzEgd2l0aCBHQ0MgMTUgKFc9MSkgZm9yIGFy bTY0LCBhcm0gYW5kIHJpc2N2LCBhdCBldmVyeQpjb21taXQsIGFuZCB3aXRoIGNsYW5nIDIxIChX PTEpIGZvciBhcm02NCBhbmQgcmlzY3YuIFJ1bi10aW1lIHRlc3RlZAp1bmRlciBCYW8gdjIuMC4w IG9uIFFFTVUgYWFyY2g2NCB2aXJ0IGFuZCBRRU1VIHJpc2N2NjQgdmlydCB3aXRoIHRoZQpiYW8t ZGVtb3MgZGVtb3M6IHRoZSBJUEMgZHJpdmVyIGV4Y2hhbmdpbmcgbWVzc2FnZXMgaW4gYm90aCBk aXJlY3Rpb25zCmJldHdlZW4gYSBMaW51eCBndWVzdCBhbmQgYSBGcmVlUlRPUyBndWVzdCwgYW5k IHRoZSBJL08gZGlzcGF0Y2hlciB3aXRoCmEgTGludXggYmFja2VuZCBzZXJ2aW5nIGNvbnNvbGUs IG5ldHdvcmsgYW5kIGJsb2NrIGRldmljZSBtb2RlbHMgdG8gYQpGcmVlUlRPUyBndWVzdCBhbmQg dG8gTGludXggZ3Vlc3RzLCBpbmNsdWRpbmcga2lsbGluZyBhbmQgcmVzdGFydGluZwp0aGUgVk1N cywgcGx1cyBhIHVzZXJzcGFjZSB0ZXN0IG9mIHRoZSAvZGV2L2JhbyBlcnJvciBwYXRocyAocHJp dmlsZWdlLApyZWdpb24gYW5kIGxpbmUgY2hlY2tzLCBkdXBsaWNhdGUgaWRzLCBsaW1pdHMsIGNv bXBsZXRpb25zKSBydW4gbmV4dCB0bwp0aGUgbGl2ZSBWTU1zLiAzMi1iaXQgQXJtIGlzIGNvbXBp bGUtdGVzdGVkIG9ubHkuCgpPcGVuIGl0ZW1zCi0tLS0tLS0tLS0KLSBSSVNDLVY6IHRoZSBCYW8g U0JJIGV4dGVuc2lvbiBzdGlsbCB1c2VzIHRoZSBleHBlcmltZW50YWwgZXh0ZW5zaW9uCiAgc3Bh Y2UgKDB4MDgwMDBiYTApLCBhbmQgdGhlIFJlbW90ZSBJL08gaHlwZXJjYWxsIHJldHVybnMgdGhl IHJlcXVlc3QKICBpbiBhMi1hNywgd2hpY2ggZG9lcyBub3QgZm9sbG93IHRoZSBTQkkgY2FsbGlu ZyBjb252ZW50aW9uIChBbmRyZXcKICBKb25lcywgdjIpLiBDaGFuZ2luZyB0aGF0IG1lYW5zIGEg aHlwZXJ2aXNvciBBQkkgY2hhbmdlIChzdGF0dXMgaW4KICBhMC9hMSwgcmVxdWVzdCB0aHJvdWdo IHNoYXJlZCBtZW1vcnkpOyB0aGUgUklTQy1WIHN1cHBvcnQgaXMKICBleHBlcmltZW50YWwgdW50 aWwgdGhlbiwgb3IgaXQgY2FuIGJlIHNwbGl0IG91dCBvZiB0aGlzIHNlcmllcyBpZgogIHByZWZl cnJlZC4KLSBCYW8gZG9lcyBub3QgaW1wbGVtZW50IHRoZSBTTUNDQyB2ZW5kb3ItaHlwZXJ2aXNv ciBVSUQgY2FsbCwgc28gdGhlCiAgZHJpdmVycyBjYW5ub3QgZGV0ZWN0IHRoZSBoeXBlcnZpc29y IHlldDsgYWRkaW5nIGl0IGlzIHBsYW5uZWQgb24gdGhlCiAgaHlwZXJ2aXNvciBzaWRlLgotIFRo ZSBub3RpZmljYXRpb24gbGluZSBpcyBhIGxpbmUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVy IHRoZSBkZXZpY2UKICB0cmVlJ3Mgcm9vdCBub2RlIHBvaW50cyBhdCB0aHJvdWdoIGludGVycnVw dC1wYXJlbnQ7IGEgZ3Vlc3Qgd2hvc2UKICByb290IG5vZGUgaGFzIG5vbmUgY2Fubm90IHVzZSB0 aGUgSS9PIGRpc3BhdGNoZXIgeWV0LgoKdjQ6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC9j b3Zlci4xNzkwMzU3NzM1LmdpdC5qcGVpeG90b0Bvc3l4LnRlY2gvCnYzOiBodHRwczovL2xvcmUu a2VybmVsLm9yZy9hbGwvY292ZXIuMTc4NjAxMDUxMi5naXQuanBlaXhvdG9Ab3N5eC50ZWNoLwoK Sm/Do28gUGVpeG90byAoMyk6CiAgdmlydDogYmFvOiBhZGQgSVBDIHNoYXJlZC1tZW1vcnkgZHJp dmVyCiAgdmlydDogYmFvOiBhZGQgSS9PIGRpc3BhdGNoZXIgZHJpdmVyCiAgTUFJTlRBSU5FUlM6 IGFkZCBCYW8gaHlwZXJ2aXNvciBlbnRyeQoKIC4uLi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1l dGVycy50eHQgICAgICAgICB8ICAxNSArCiAuLi4vdXNlcnNwYWNlLWFwaS9pb2N0bC9pb2N0bC1u dW1iZXIucnN0ICAgICAgfCAgIDIgKwogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA4ICsKIGRyaXZlcnMvdmlydC9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL3ZpcnQvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogZHJpdmVycy92aXJ0L2Jhby9LY29uZmlnICAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICsKIGRyaXZlcnMvdmlydC9iYW8vTWFrZWZpbGUgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArCiBkcml2ZXJzL3ZpcnQvYmFvL2Jhb19oeXBlcmNhbGwuaCAgICAgICAgICAg ICAgfCAyMDUgKysrKysrKysKIGRyaXZlcnMvdmlydC9iYW8vaW8tZGlzcGF0Y2hlci9LY29uZmln ICAgICAgICB8ICAyMCArCiBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIvTWFrZWZpbGUg ICAgICAgfCAgIDQgKwogZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2Jhb19kcnYuaCAg ICAgIHwgNDAxICsrKysrKysrKysrKysrKysKIGRyaXZlcnMvdmlydC9iYW8vaW8tZGlzcGF0Y2hl ci9kbS5jICAgICAgICAgICB8IDQzOCArKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvdmlydC9i YW8vaW8tZGlzcGF0Y2hlci9kcml2ZXIuYyAgICAgICB8ICA3MSArKysKIGRyaXZlcnMvdmlydC9i YW8vaW8tZGlzcGF0Y2hlci9pbnRjLmMgICAgICAgICB8IDE4NiArKysrKysrKwogZHJpdmVycy92 aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2lvX2NsaWVudC5jICAgIHwgNDMwICsrKysrKysrKysrKysr KysrCiAuLi4vdmlydC9iYW8vaW8tZGlzcGF0Y2hlci9pb19kaXNwYXRjaGVyLmMgICAgfCAxNzMg KysrKysrKwogZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2lvZXZlbnRmZC5jICAgIHwg MzUwICsrKysrKysrKysrKysrCiBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIvaXJxZmQu YyAgICAgICAgfCAzMjEgKysrKysrKysrKysrKwogZHJpdmVycy92aXJ0L2Jhby9pcGNzaG1lbS9L Y29uZmlnICAgICAgICAgICAgIHwgIDE2ICsKIGRyaXZlcnMvdmlydC9iYW8vaXBjc2htZW0vTWFr ZWZpbGUgICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL3ZpcnQvYmFvL2lwY3NobWVtL2lwY3No bWVtLmMgICAgICAgICAgfCA0MjEgKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9saW51 eC9iYW8uaCAgICAgICAgICAgICAgICAgICAgICB8IDEyNiArKysrKwogMjIgZmlsZXMgY2hhbmdl ZCwgMzIwMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jh by9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9NYWtlZmlsZQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlydC9iYW8vYmFvX2h5cGVyY2FsbC5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL0tjb25maWcKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIvTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIvYmFvX2Ry di5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVyL2Rt LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIvZHJp dmVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZpcnQvYmFvL2lvLWRpc3BhdGNoZXIv aW50Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pby1kaXNwYXRjaGVy L2lvX2NsaWVudC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92aXJ0L2Jhby9pby1kaXNw YXRjaGVyL2lvX2Rpc3BhdGNoZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmlydC9i YW8vaW8tZGlzcGF0Y2hlci9pb2V2ZW50ZmQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv dmlydC9iYW8vaW8tZGlzcGF0Y2hlci9pcnFmZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy92aXJ0L2Jhby9pcGNzaG1lbS9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy92 aXJ0L2Jhby9pcGNzaG1lbS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmly dC9iYW8vaXBjc2htZW0vaXBjc2htZW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFw aS9saW51eC9iYW8uaAoKCmJhc2UtY29tbWl0OiA2NjI4ZTdkNGM2YjI1YzhkMThmMTM0NWUzYTIw ZDIxODI5YWFlN2U0Ci0tIAoyLjUzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LXJpc2N2Cg==