-
Notifications
You must be signed in to change notification settings - Fork 52
refactor: rewrite axvm #329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
ZR233
wants to merge
7
commits into
master
Choose a base branch
from
next
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This was
linked to
issues
Dec 21, 2025
Open
Open
ba4224e to
1d5a42b
Compare
chore: update submodule commits for various modules feat: add axplat-aarch64-dyn submodule feat(axalloc): introduce a global memory allocator with buddy system - Added `axalloc` crate with a global allocator implementation. - Implemented `GlobalAllocator` using a buddy system allocator. - Provided functions for memory initialization, allocation, and deallocation. - Added `GlobalPage` struct for managing contiguous memory pages. feat(axvm-types): define address types and device access structures - Introduced `GuestVirtAddr` and `GuestPhysAddr` types for guest memory addressing. - Created traits for device address handling and defined `DeviceAddr` and `DeviceAddrRange`. - Implemented `Port` and `SysRegAddr` types for I/O operations and system registers. fix(vmm): update VM reference handling - Changed `push_vm` function to accept `axvm::Vm` directly and return an `Arc<axvm::Vm>`. - Updated global VM list management to use `Arc` for thread-safe reference counting. chore: update submodules and dependencies - Updated submodules for `arm_vcpu`, `axvm`, and `axvmconfig`. - Added `memory_addr` dependency to `axruntime` and `axvm-types`. - Updated `Cargo.toml` files to reflect new dependencies and features. chore: update axplat-aarch64-dyn submodule to latest commit chore: update axplat-aarch64-dyn submodule to latest commit fix: update memory mapping type in build_vmconfig function chore: update dependencies to version hv-0.4.3 and sync submodule axvm chore: update dependencies and refactor task management in the kernel chore: update fdt-parser submodule to latest commit chore: update fdt-edit and fdt-raw packages to latest versions and adjust dependencies chore: update fdt-edit package to version 0.1.3 and adjust checksum chore: update Cargo.lock and axplat-aarch64-dyn submodule to latest commits Add initial documentation and diagram for refactoring process - Created a new markdown file `refactor.md` to outline the refactoring strategy. - Added a binary image `refactor.png` to visually represent the refactoring process. Add refactor documentation for AxVisor architecture evolution - Introduced a comprehensive analysis report detailing the transition from axvisor-dev3 to axvsior-dev2. - Documented key architectural changes, including modularization, multi-architecture support, and improved dependency management. - Highlighted the benefits of the refactor, such as enhanced maintainability, stability, and development efficiency. - Provided a detailed comparison of the old and new architecture, including directory structure and module responsibilities. - Included design principles, performance optimizations, and future development recommendations. Refactor AxVisor architecture: Transition from monolithic to modular design - Removed detailed execution summary and key improvements from refactor.md to streamline documentation. - Deleted outdated diagram (refactor.png) to eliminate redundancy. - Updated submodule reference for axvm to the latest commit for improved consistency. Refactor code structure for improved readability and maintainability 更新 Cargo.lock 和 Cargo.toml,移除 fdt-parser 版本限制并添加 ranges-ext 依赖 更新 fdt-edit 依赖版本至 0.1.4,移除 ept-level-4 特性,并更新 axvm 子模块 更新 axalloc 依赖版本至 0.2.0,修复依赖冲突并移除过时的 zerocopy 依赖 更新 GitHub Actions 工作流,升级 checkout 动作至 v6 并启用子模块递归更新;更新 axvm 子模块至最新提交 update ci 删除不再使用的 NimbOS 和 QEMU 设置工作流;移除多个配置文件中的 ept-level-4 特性 refactor: Enhance AxVm design and state management - Introduced a detailed design for AxVm, illustrating its internal structure and lifecycle management through state machines. - Defined the overall architecture, including the relationship between AxVisor and Vm instances. - Elaborated on the state management within VmData, detailing the three core states: InitData, VmRunData, and StoppedData. - Clarified the VCPU and threading model, emphasizing resource migration and lifecycle safety through Arc/Weak references. refactor: 清理未使用的导入和模块,优化代码结构 更新 fdt-edit 包至版本 0.1.5,移除 build_vmconfig 函数中的冗余设备配置,更新 axvm 子模块至最新提交 更新 axvm 子模块至最新提交 更新 axvm 子模块至最新提交 更新 linux-aarch64-qemu-smp1.toml 配置,移除冗余物理 CPU ID 和内核相关注释,更新 axvm 子模块至最新提交 更新 axvm 和 arm_vcpu 子模块至最新提交 更新 axvm 子模块至最新提交 更新 axvm 和 arm_vcpu 子模块至最新提交 更新 axvm 子模块至最新提交 更新 axvm 和 arm_vcpu 子模块至最新提交 更新 axvm 和 arm_vcpu 子模块至最新提交 更新 axvm 子模块至最新提交 更新 arceos 和 linux 虚拟机配置文件,注释掉物理 CPU ID 和内核相关参数 在虚拟机配置中添加内核中断模式设置为“passthrough” 调整 arceos 虚拟机配置,移动中断模式设置至设备规格部分,并更新内核路径和内存区域配置 更新 uboot.toml 成功正则表达式,添加 "Hello, world!";更新 arm_vcpu 和 axvm-types 子模块至最新提交 更新 arceos 和 linux 虚拟机配置,注释掉物理 CPU ID 和内核相关参数 更新 axvm 子模块至最新提交 更新 axvm 子模块至最新提交;修复内存映射类型为保留类型的配置;更新 axconfig 和 axruntime 的版本号至 0.1.0 更新依赖项,添加 axplat-x86-qemu-q35 和 x86_vcpu;修复多处理器启动页设置中的指针计算 更新 arm_vcpu 子模块至最新提交 更新 arm_vcpu 和 axvm 子模块至最新提交 更新依赖项,添加 raw-cpuid 和 axaddrspace;公开 load_images_fs 函数;更新子模块至最新提交 doc: update uml 更新版本号至 0.3.0,优化 load_images_fs 函数,简化内存映像加载逻辑 fmt chore: clean up Cargo.lock by removing unused packages and updating dependencies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces several infrastructure and dependency management updates, primarily focused on improving module handling, workspace configuration, and patch management for the project. It also includes some cleanup and modernization of CI workflow files and board configuration files.
Dependency and Module Management
.gitmodulesfor various system and platform modules, enabling local development and easier updates.Cargo.tomlto use local paths for several dependencies (e.g.,axvm,axvcpu,axdevice, etc.), added new dependencies (ranges-ext,vm-allocator,axplat-aarch64-dyn,axvm-types), and reworked[patch]sections to point to local modules instead of remote repositories. [1] [2] [3] [4] [5].cargo/config.tomlfor local crate overrides, improving workflow for development and testing of patched crates..devspace/state.jsonto track module paths and applied patches, supporting reproducibility and easier environment setup.Continuous Integration Workflow Updates
actions/checkoutto v6 and enabled recursive submodule checkout intest-board.ymlandtest-qemu.yml, ensuring all submodules are correctly initialized during CI runs. [1] [2]Board and VM Configuration Cleanup
"ept-level-4"feature from multiple board configuration files, simplifying feature sets for various platforms. [1] [2] [3] [4] [5]linux-aarch64-qemu-smp1.toml, removing unused or redundant fields and clarifying CPU set definitions.Miscellaneous
force_explicit_abiin.rustfmt.toml, possibly reverting to default formatting behavior.These changes collectively improve the project's maintainability, streamline development workflows, and modernize CI/CD and configuration management.