Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 27 additions & 26 deletions README-zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,34 +24,36 @@ hvisor 是一个用 Rust 实现的 Type-1 裸机虚拟机监控器,采用分
- CPU 虚拟化:静态分区的物理 CPU(pCPUs),不进行动态调度。
- 内存虚拟化:通过配置文件对虚拟机内存空间进行预分配。
- I/O 虚拟化:支持设备直通和 virtio 半虚拟化。
- **多平台支持**:支持多种架构,包括 `aarch64`、`riscv64` 和 `loongarch64`。
- **多平台支持**:支持多种架构,包括 `aarch64`、`riscv64`、`loongarch64` 和 `x86_64`。
- **虚拟机管理**:虚拟机通过 zone0(root-linux)中的 Linux 环境进行管理,管理任务通过命令行工具 [hvisor-tool](https://github.com/syswonder/hvisor-tool) 完成,提供创建、启动、停止和删除虚拟机的基本管理功能。
- **形式化验证**:部分 hvisor 代码正在使用 [verus](https://github.com/verus-lang/verus) 工具进行形式化验证。

## 设备支持

| **类别** | **设备** | **支持架构** | **备注** |
| ------------------ | --------------------- | ----------------------------------- | -------------------------------------- |
| **Virtio 设备** | virtio-blk | `aarch64`, `riscv64`, `loongarch64` | |
| | virtio-net | `aarch64` | |
| | virtio-console | `aarch64`, `riscv64`, `loongarch64` | |
| | virtio-gpu | `aarch64` | 仅支持 QEMU |
| **串行设备/UARTs** | PL011 | `aarch64` | |
| | imx-uart | `aarch64` | NXP i.MX8MP |
| | NS16550A | `loongarch64` | |
| | xuartps | `aarch64` | Xilinx Ultrascale+ MPSoC ZCU102 |
| | uart16550 | `aarch64` | Rockchip RK3568/RK3588, Forlinx OK6254-C |
| **中断控制器** | GIC irq controller | `aarch64` | |
| | 7A2000 irq controller | `loongarch64` | |
| | PLIC | `riscv64` | |
| | AIA | `riscv64` | 仅支持 MSI 模式 |
| **设备直通(Zone0)** | All | All | |
| **设备直通(ZoneU)** | PCIe | `aarch64`, `riscv64`, `loongarch64` | 待测试 |
| | GPU / HDMI | `aarch64`, `loongarch64` | NXP i.MX8MP, 3A6000 |
| | eMMC | `aarch64`, `riscv64` | NXP i.MX8MP |
| | USB | `aarch64` | NXP i.MX8MP |
| | SATA | `riscv64`, `loongarch64` | megrez, 3A6000 |
| | Ethernet | `aarch64`, `riscv64`, `loongarch64` | NXP i.MX8MP, megrez, 3A6000 |
| **类别** | **设备** | **支持架构** | **备注** |
| ------------------ | --------------------- | --------------------------------------------- | -------------------------------------- |
| **Virtio 设备** | virtio-blk | `aarch64`, `riscv64`, `loongarch64`, `x86_64` | |
| | virtio-net | `aarch64`, `x86_64` | |
| | virtio-console | `aarch64`, `riscv64`, `loongarch64`, `x86_64` | |
| | virtio-gpu | `aarch64` | 仅支持 QEMU |
| **串行设备/UARTs** | PL011 | `aarch64` | |
| | imx-uart | `aarch64` | NXP i.MX8MP |
| | NS16550A | `loongarch64` | |
| | xuartps | `aarch64` | Xilinx Ultrascale+ MPSoC ZCU102 |
| | uart16550 | `aarch64` | Rockchip RK3568/RK3588, Forlinx OK6254-C |
| | uart16550a | `x86_64` | |
| **中断控制器** | GIC irq controller | `aarch64` | |
| | 7A2000 irq controller | `loongarch64` | |
| | PLIC | `riscv64` | |
| | AIA | `riscv64` | 仅支持 MSI 模式 |
| | APIC | `x86_64` | |
| **设备直通(Zone0)** | All | All | |
| **设备直通(ZoneU)** | PCIe | `aarch64`, `riscv64`, `loongarch64`,`x86_64` | 待测试 |
| | GPU / HDMI | `aarch64`, `loongarch64` | NXP i.MX8MP, 3A6000 |
| | eMMC | `aarch64`, `riscv64` | NXP i.MX8MP |
| | USB | `aarch64` | NXP i.MX8MP |
| | SATA | `riscv64`, `loongarch64` | megrez, 3A6000 |
| | Ethernet | `aarch64`, `riscv64`, `loongarch64`,`x86_64` | NXP i.MX8MP, megrez, 3A6000 |

## 板卡支持

Expand Down Expand Up @@ -79,8 +81,8 @@ hvisor 是一个用 Rust 实现的 Type-1 裸机虚拟机监控器,采用分

### x86_64

- [ ] QEMU virt x86_64
- [ ] ASUS NUC14MNK
- [x] QEMU Q35
- [x] ASUS NUC14MNK

## Guest OS 支持

Expand All @@ -97,7 +99,6 @@ hvisor 是一个用 Rust 实现的 Type-1 裸机虚拟机监控器,采用分

## 路线图

- 支持 `x86_64` 架构
- 支持 Android
- 支持 OpenHarmony
- 支持 ARMv9
Expand Down
53 changes: 27 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,34 +23,36 @@ hvisor is a Type-1 bare-metal virtual machine monitor implemented in Rust, featu
- CPU Virtualization: Static partitioning of physical CPUs (pCPUs), without dynamic scheduling.
- Memory Virtualization: Pre-allocated virtual machine memory space via configuration files.
- I/O Virtualization: Supports device passthrough and virtio paravirtualization.
- **Multi-platform Support**: Supports various architectures, including `aarch64`, `riscv64`, and `loongarch64`.
- **Multi-platform Support**: Supports various architectures, including `aarch64`, `riscv64`, `loongarch64` and `x86_64`.
- **Virtual Machine Management**: Virtual machines are managed through a Linux environment in zone0 (root-linux), with basic management tasks (create, start, stop, delete) handled via the command-line tool [hvisor-tool](https://github.com/syswonder/hvisor-tool).
- **Formal Verification**: Part of the hvisor code is undergoing formal verification using the [verus](https://github.com/verus-lang/verus) tool.

## Device Support

| **Category** | **Device** | **Supported Architectures** | **Notes** |
|----------------------------------|------------------------|---------------------------------------|----------------------------------------|
| **Virtio Devices** | virtio-blk | `aarch64`, `riscv64`, `loongarch64` | |
| | virtio-net | `aarch64` | |
| | virtio-console | `aarch64`, `riscv64`, `loongarch64` | |
| | virtio-gpu | `aarch64` | QEMU only |
| **Serial Devices/UARTs** | PL011 | `aarch64` | |
| | imx-uart | `aarch64` | NXP i.MX8MP |
| | NS16550A | `loongarch64` | |
| | xuartps | `aarch64` | Xilinx Ultrascale+ MPSoC ZCU102 |
| | uart16550 | `aarch64` | Rockchip RK3568/RK3588, Forlinx OK6254-C|
| **Interrupt Controllers** | GIC irq controller | `aarch64` | |
| | 7A2000 irq controller | `loongarch64` | |
| | PLIC | `riscv64` | |
| | AIA | `riscv64` | MSI mode only |
| **Device Passthrough(Zone0)** | All | All | |
| **Device Passthrough(ZoneU)** | PCIe | `aarch64`, `riscv64`, `loongarch64` | Testing needed |
| | GPU / HDMI | `aarch64`, `loongarch64` | NXP i.MX8MP, 3A6000 |
| | eMMC | `aarch64`, `riscv64` | NXP i.MX8MP |
| | USB | `aarch64` | NXP i.MX8MP |
| | SATA | `riscv64`, `loongarch64` | megrez, 3A6000 |
| | Ethernet | `aarch64`, `riscv64`, `loongarch64` | NXP i.MX8MP, megrez, 3A6000 |
| **Category** | **Device** | **Supported Architectures** | **Notes** |
|----------------------------------|------------------------|----------------------------------------------|----------------------------------------|
| **Virtio Devices** | virtio-blk | `aarch64`, `riscv64`, `loongarch64`,`x86_64` | |
| | virtio-net | `aarch64`,`x86_64` | |
| | virtio-console | `aarch64`, `riscv64`, `loongarch64`,`x86_64` | |
| | virtio-gpu | `aarch64` | QEMU only |
| **Serial Devices/UARTs** | PL011 | `aarch64` | |
| | imx-uart | `aarch64` | NXP i.MX8MP |
| | NS16550A | `loongarch64` | |
| | xuartps | `aarch64` | Xilinx Ultrascale+ MPSoC ZCU102 |
| | uart16550 | `aarch64` | Rockchip RK3568/RK3588, Forlinx OK6254-C|
| | uart16550a | `x86_64` | |
| **Interrupt Controllers** | GIC irq controller | `aarch64` | |
| | 7A2000 irq controller | `loongarch64` | |
| | PLIC | `riscv64` | |
| | AIA | `riscv64` | MSI mode only |
| | APIC | `x86_64` | |
| **Device Passthrough(Zone0)** | All | All | |
| **Device Passthrough(ZoneU)** | PCIe | `aarch64`, `riscv64`, `loongarch64`,`x86_64` | Testing needed |
| | GPU / HDMI | `aarch64`, `loongarch64` | NXP i.MX8MP, 3A6000 |
| | eMMC | `aarch64`, `riscv64` | NXP i.MX8MP |
| | USB | `aarch64` | NXP i.MX8MP |
| | SATA | `riscv64`, `loongarch64` | megrez, 3A6000 |
| | Ethernet | `aarch64`, `riscv64`, `loongarch64`,`x86_64` | NXP i.MX8MP, megrez, 3A6000 |

## Supported Boards

Expand Down Expand Up @@ -78,8 +80,8 @@ hvisor is a Type-1 bare-metal virtual machine monitor implemented in Rust, featu

### x86_64

- [ ] QEMU virt x86_64
- [ ] ASUS NUC14MNK
- [x] QEMU Q35
- [x] ASUS NUC14MNK

## Supported Guest OS

Expand All @@ -96,7 +98,6 @@ Please refer to the hvisor documentation for quick start guides, build and run i

## Roadmap

- Support for `x86_64` architecture
- Support for Android
- Support for OpenHarmony
- Support for ARMv9
Expand Down