From 54f94dd1081daa09db88f36934a50c40454a7061 Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Thu, 21 May 2026 22:03:39 +0800 Subject: [PATCH 1/8] feat(starry-kernel): add LKM support via kmod-loader integration - kmod_loader.rs: StarryKmodHelper (KernelModuleHelper trait impl) - KmodSectionMem: page-aligned memory with SectionMemOps, R/W/X perms - vmalloc: page-aligned kernel memory allocation - resolve_symbol: stub (depends on PR #837 kallsyms) - flsuh_cache: icache/dcache flush for loaded module code - sys_init_module: load .ko ELF from user memory, call init - sys_delete_module / sys_finit_module: syscall stubs - test-kmod-loader: 7 test modules for error path validation - Depends on: feat/starry-kprobe, feat/starry-ebpf --- Cargo.lock | 1302 ++++++++--------- .../examples/hello-kernel/linker_x86_64.lds | 52 + .../examples/irq-kernel/linker_x86_64.lds | 52 + .../examples/smp-kernel/linker_x86_64.lds | 52 + os/StarryOS/kernel/Cargo.toml | 2 + os/StarryOS/kernel/src/kmod_loader.rs | 180 +++ os/StarryOS/kernel/src/lib.rs | 2 +- os/StarryOS/kernel/src/syscall/mod.rs | 7 + .../syscall/test-kmod-loader/c/CMakeLists.txt | 8 + .../syscall/test-kmod-loader/c/src/main.c | 86 ++ 10 files changed, 1055 insertions(+), 688 deletions(-) create mode 100644 components/axplat_crates/examples/hello-kernel/linker_x86_64.lds create mode 100644 components/axplat_crates/examples/irq-kernel/linker_x86_64.lds create mode 100644 components/axplat_crates/examples/smp-kernel/linker_x86_64.lds create mode 100644 os/StarryOS/kernel/src/kmod_loader.rs create mode 100644 test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt create mode 100644 test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c diff --git a/Cargo.lock b/Cargo.lock index 269c2698fa..3e8679390d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,31 +63,15 @@ dependencies = [ "spinning_top 0.3.0", ] -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "cpp_demangle 0.4.5", - "fallible-iterator", - "gimli 0.32.3", - "memmap2", - "object 0.37.3", - "rustc-demangle", - "smallvec", - "typed-arena", -] - [[package]] name = "addr2line" version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59317f77929f0e679d39364702289274de2f0f0b22cbf50b2b8cff2169a0b27a" dependencies = [ - "cpp_demangle 0.5.1", + "cpp_demangle", "fallible-iterator", - "gimli 0.33.0", + "gimli", "memmap2", "object 0.39.1", "rustc-demangle", @@ -243,8 +227,6 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" name = "arceos-affinity" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -252,8 +234,6 @@ dependencies = [ name = "arceos-backtrace" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "axbacktrace", ] @@ -262,8 +242,6 @@ dependencies = [ name = "arceos-backtrace-raw-badfp" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "axbacktrace", ] @@ -272,8 +250,6 @@ dependencies = [ name = "arceos-backtrace-raw-basic" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "axbacktrace", ] @@ -282,8 +258,6 @@ dependencies = [ name = "arceos-backtrace-raw-normal" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "axbacktrace", ] @@ -292,8 +266,6 @@ dependencies = [ name = "arceos-display" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "embedded-graphics", ] @@ -302,8 +274,6 @@ dependencies = [ name = "arceos-exception" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -312,10 +282,8 @@ name = "arceos-fs-shell" version = "0.3.1" dependencies = [ "ax-crate-interface", - "ax-driver", "ax-fs-ramfs", "ax-fs-vfs", - "ax-hal", "ax-std", ] @@ -323,8 +291,6 @@ dependencies = [ name = "arceos-ipi" version = "0.3.0" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -332,8 +298,6 @@ dependencies = [ name = "arceos-irq" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -341,19 +305,14 @@ dependencies = [ name = "arceos-lockdep" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-kspin", "ax-std", - "axfs-ng-vfs", ] [[package]] name = "arceos-memtest" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "rand 0.8.6", ] @@ -362,8 +321,6 @@ dependencies = [ name = "arceos-net-echoserver" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -371,8 +328,6 @@ dependencies = [ name = "arceos-net-httpclient" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-io", "ax-std", ] @@ -381,8 +336,6 @@ dependencies = [ name = "arceos-net-httpserver" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -390,8 +343,6 @@ dependencies = [ name = "arceos-net-udpserver" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -399,8 +350,6 @@ dependencies = [ name = "arceos-parallel" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", "rand 0.8.6", ] @@ -409,8 +358,6 @@ dependencies = [ name = "arceos-priority" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -420,13 +367,11 @@ version = "0.1.1" [[package]] name = "arceos-rust-interface" -version = "1.0.3" +version = "1.0.2" dependencies = [ "ax-api", - "ax-driver", "ax-errno", "ax-feat", - "ax-hal", "ax-io", "ax-kspin", "ax-posix-api", @@ -439,16 +384,6 @@ dependencies = [ name = "arceos-sleep" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", - "ax-std", -] - -[[package]] -name = "arceos-stack-guard-page" -version = "0.3.1" -dependencies = [ - "ax-hal", "ax-std", ] @@ -511,8 +446,6 @@ dependencies = [ name = "arceos-tls" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -520,17 +453,6 @@ dependencies = [ name = "arceos-wait-queue" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", - "ax-std", -] - -[[package]] -name = "arceos-wait-queue-remote-wake" -version = "0.3.1" -dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -538,8 +460,6 @@ dependencies = [ name = "arceos-yield" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -567,14 +487,14 @@ dependencies = [ "nb", "num-align", "smccc", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", ] [[package]] name = "arm_vcpu" -version = "0.5.9" +version = "0.5.8" dependencies = [ "aarch64-cpu 11.2.0", "ax-errno", @@ -585,24 +505,23 @@ dependencies = [ "axvisor_api", "log", "numeric-enum-macro", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] name = "arm_vgic" -version = "0.4.10" +version = "0.4.9" dependencies = [ "aarch64-cpu 11.2.0", "aarch64_sysreg", "ax-errno", - "ax-kspin", "ax-memory-addr", "axaddrspace", "axdevice_base", "axvisor_api", "bitmaps", "log", - "spin 0.12.0", + "spin 0.10.0", "tock-registers 0.10.1", ] @@ -664,9 +583,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" @@ -692,7 +611,7 @@ dependencies = [ [[package]] name = "ax-alloc" -version = "0.7.2" +version = "0.7.1" dependencies = [ "ax-allocator", "ax-errno", @@ -709,7 +628,7 @@ dependencies = [ [[package]] name = "ax-allocator" -version = "0.5.2" +version = "0.5.1" dependencies = [ "ax-errno", "ax_slab_allocator", @@ -723,12 +642,13 @@ dependencies = [ [[package]] name = "ax-api" -version = "0.5.16" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-config", "ax-display", "ax-dma", + "ax-driver", "ax-errno", "ax-feat", "ax-fs", @@ -743,6 +663,13 @@ dependencies = [ "ax-task", ] +[[package]] +name = "ax-arm-pl011" +version = "0.3.8" +dependencies = [ + "tock-registers 0.8.1", +] + [[package]] name = "ax-arm-pl031" version = "0.4.7" @@ -785,7 +712,7 @@ dependencies = [ [[package]] name = "ax-cpu" -version = "0.6.4" +version = "0.6.3" dependencies = [ "aarch64-cpu 11.2.0", "ax-lazyinit", @@ -841,17 +768,17 @@ dependencies = [ [[package]] name = "ax-display" -version = "0.5.14" +version = "0.5.13" dependencies = [ + "ax-driver", "ax-lazyinit", "ax-sync", "log", - "rdif-display", ] [[package]] name = "ax-dma" -version = "0.5.15" +version = "0.5.14" dependencies = [ "ax-alloc", "ax-allocator", @@ -865,57 +792,104 @@ dependencies = [ [[package]] name = "ax-driver" -version = "0.6.0" +version = "0.5.15" dependencies = [ - "anyhow", - "arm-scmi-rs", "ax-alloc", - "ax-arm-pl031", + "ax-config", "ax-crate-interface", + "ax-dma", + "ax-driver-base", + "ax-driver-block", + "ax-driver-display", + "ax-driver-input", + "ax-driver-net", + "ax-driver-pci", + "ax-driver-virtio", + "ax-driver-vsock", "ax-errno", - "ax-kernel-guard", - "ax-kspin", - "axklib", + "ax-hal", + "axplat-dyn", + "cfg-if", + "log", + "smallvec", +] + +[[package]] +name = "ax-driver-base" +version = "0.3.12" + +[[package]] +name = "ax-driver-block" +version = "0.3.13" +dependencies = [ + "ax-driver-base", "bcm2835-sdhci", - "crab-usb", - "dma-api", - "dwmmc-host", - "eth-intel", - "fdt-edit", + "gpt_disk_io", + "log", + "sg200x-bsp", + "simple-ahci", + "simple-sdmmc", +] + +[[package]] +name = "ax-driver-display" +version = "0.3.12" +dependencies = [ + "ax-driver-base", +] + +[[package]] +name = "ax-driver-input" +version = "0.3.13" +dependencies = [ + "ax-driver-base", + "strum 0.27.2", +] + +[[package]] +name = "ax-driver-net" +version = "0.3.13" +dependencies = [ + "ax-driver-base", + "bitflags 2.11.1", "fxmac_rs", - "heapless 0.9.3", "ixgbe-driver", "log", - "mmio-api", - "pcie", - "phytium-mci-host", - "ramdisk", - "rd-block", - "rd-net", - "rdif-clk", - "rdif-display", - "rdif-input", - "rdif-intc", - "rdif-pcie", - "rdif-vsock", - "rdrive", - "rdrive-macros", - "realtek-rtl8125", - "rk3588-pci", - "rockchip-npu", - "rockchip-pm", - "rockchip-soc", - "sdhci-host", - "sdmmc-protocol", - "simple-ahci", - "some-serial", - "spin 0.12.0", + "spin 0.9.8", +] + +[[package]] +name = "ax-driver-pci" +version = "0.3.12" +dependencies = [ "virtio-drivers", ] +[[package]] +name = "ax-driver-virtio" +version = "0.4.0" +dependencies = [ + "ax-driver-base", + "ax-driver-block", + "ax-driver-display", + "ax-driver-input", + "ax-driver-net", + "ax-driver-vsock", + "log", + "virtio-drivers", +] + +[[package]] +name = "ax-driver-vsock" +version = "0.3.12" +dependencies = [ + "ax-driver-base", + "log", +] + [[package]] name = "ax-errno" -version = "0.6.0" +version = "0.5.0" dependencies = [ "log", "strum 0.27.2", @@ -923,7 +897,7 @@ dependencies = [ [[package]] name = "ax-feat" -version = "0.5.16" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-config", @@ -937,7 +911,6 @@ dependencies = [ "ax-kspin", "ax-log", "ax-net", - "ax-net-ng", "ax-runtime", "ax-sync", "ax-task", @@ -946,37 +919,38 @@ dependencies = [ [[package]] name = "ax-fs" -version = "0.5.14" +version = "0.5.13" dependencies = [ "ax-cap-access", + "ax-driver", "ax-errno", "ax-fs-devfs", "ax-fs-ramfs", "ax-fs-vfs", "ax-hal", "ax-io", - "ax-kspin", "ax-lazyinit", "axfatfs", "log", "rsext4", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] name = "ax-fs-devfs" -version = "0.3.11" +version = "0.3.10" dependencies = [ "ax-fs-vfs", "log", - "spin 0.12.0", + "spin 0.9.8", ] [[package]] name = "ax-fs-ng" -version = "0.5.15" +version = "0.5.14" dependencies = [ "ax-alloc", + "ax-driver", "ax-errno", "ax-hal", "ax-io", @@ -989,28 +963,27 @@ dependencies = [ "chrono", "intrusive-collections", "log", - "lru 0.16.4", + "lru", "lwext4_rust", - "rd-block-volume", "rsext4", "scope-local", "slab", - "spin 0.12.0", + "spin 0.10.0", "starry-fatfs", ] [[package]] name = "ax-fs-ramfs" -version = "0.3.12" +version = "0.3.11" dependencies = [ "ax-fs-vfs", "log", - "spin 0.12.0", + "spin 0.9.8", ] [[package]] name = "ax-fs-vfs" -version = "0.3.11" +version = "0.3.10" dependencies = [ "ax-errno", "bitflags 2.11.1", @@ -1019,7 +992,7 @@ dependencies = [ [[package]] name = "ax-hal" -version = "0.5.15" +version = "0.5.14" dependencies = [ "ax-alloc", "ax-config", @@ -1029,23 +1002,16 @@ dependencies = [ "ax-page-table-multiarch", "ax-percpu", "ax-plat", - "ax-plat-aarch64-bsta1000b", - "ax-plat-aarch64-phytium-pi", "ax-plat-aarch64-qemu-virt", - "ax-plat-aarch64-raspi", "ax-plat-loongarch64-qemu-virt", "ax-plat-riscv64-qemu-virt", - "ax-plat-riscv64-sg2002", - "ax-plat-riscv64-visionfive2", "ax-plat-x86-pc", - "ax-plat-x86-qemu-q35", "axplat-dyn", "cfg-if", "fdt-parser", "heapless 0.9.3", "log", - "rdrive", - "spin 0.12.0", + "spin 0.10.0", "toml 1.1.2+spec-1.1.0", ] @@ -1057,8 +1023,6 @@ version = "0.3.7" name = "ax-helloworld" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -1066,8 +1030,6 @@ dependencies = [ name = "ax-helloworld-myplat" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-plat-aarch64-bsta1000b", "ax-plat-aarch64-phytium-pi", "ax-plat-aarch64-qemu-virt", @@ -1083,8 +1045,6 @@ dependencies = [ name = "ax-httpclient" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] @@ -1092,19 +1052,17 @@ dependencies = [ name = "ax-httpserver" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] [[package]] name = "ax-input" -version = "0.5.14" +version = "0.5.13" dependencies = [ + "ax-driver", "ax-lazyinit", "ax-sync", "log", - "rdif-input", ] [[package]] @@ -1113,7 +1071,7 @@ version = "0.3.7" [[package]] name = "ax-io" -version = "0.5.7" +version = "0.5.6" dependencies = [ "ax-errno", "heapless 0.9.3", @@ -1122,7 +1080,7 @@ dependencies = [ [[package]] name = "ax-ipi" -version = "0.5.14" +version = "0.5.13" dependencies = [ "ax-config", "ax-hal", @@ -1155,12 +1113,10 @@ version = "0.4.7" [[package]] name = "ax-libc" -version = "0.5.15" +version = "0.5.14" dependencies = [ - "ax-driver", "ax-errno", "ax-feat", - "ax-hal", "ax-io", "ax-posix-api", "bindgen 0.72.1", @@ -1196,7 +1152,7 @@ version = "0.6.8" [[package]] name = "ax-memory-set" -version = "0.6.9" +version = "0.6.8" dependencies = [ "ax-errno", "ax-memory-addr", @@ -1204,7 +1160,7 @@ dependencies = [ [[package]] name = "ax-mm" -version = "0.5.15" +version = "0.5.14" dependencies = [ "ax-alloc", "ax-errno", @@ -1219,33 +1175,33 @@ dependencies = [ [[package]] name = "ax-net" -version = "0.5.14" +version = "0.5.13" dependencies = [ + "ax-driver", "ax-errno", "ax-hal", "ax-io", "ax-lazyinit", - "ax-net-ng", "ax-sync", "ax-task", "cfg-if", "log", "smoltcp 0.13.1", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] name = "ax-net-ng" -version = "0.6.1" +version = "0.6.0" dependencies = [ "async-channel", "async-trait", "ax-config", + "ax-driver", "ax-errno", "ax-fs-ng", "ax-hal", "ax-io", - "ax-kspin", "ax-sync", "ax-task", "axfs-ng-vfs", @@ -1255,12 +1211,11 @@ dependencies = [ "enum_dispatch", "event-listener", "hashbrown 0.16.1", + "lazy_static", "log", - "rd-net", - "rdif-vsock", "ringbuf", "smoltcp 0.13.1", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] @@ -1275,7 +1230,7 @@ dependencies = [ [[package]] name = "ax-page-table-multiarch" -version = "0.8.10" +version = "0.8.9" dependencies = [ "arrayvec", "ax-errno", @@ -1295,7 +1250,7 @@ dependencies = [ "ax-kernel-guard", "ax-percpu-macros", "cfg-if", - "spin 0.12.0", + "spin 0.10.0", "x86", ] @@ -1321,12 +1276,11 @@ dependencies = [ "ax-plat-macros", "bitflags 2.11.1", "const-str", - "rdrive", ] [[package]] name = "ax-plat-aarch64-bsta1000b" -version = "0.5.11" +version = "0.5.10" dependencies = [ "ax-config-macros", "ax-cpu", @@ -1334,16 +1288,17 @@ dependencies = [ "ax-page-table-entry", "ax-plat", "ax-plat-aarch64-peripherals", + "dw_apb_uart", "log", - "some-serial", ] [[package]] name = "ax-plat-aarch64-peripherals" -version = "0.5.10" +version = "0.5.9" dependencies = [ "aarch64-cpu 11.2.0", "arm-gic-driver", + "ax-arm-pl011", "ax-arm-pl031", "ax-cpu", "ax-int-ratio", @@ -1351,13 +1306,12 @@ dependencies = [ "ax-lazyinit", "ax-plat", "log", - "some-serial", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] name = "ax-plat-aarch64-phytium-pi" -version = "0.5.11" +version = "0.5.10" dependencies = [ "ax-config-macros", "ax-cpu", @@ -1369,22 +1323,19 @@ dependencies = [ [[package]] name = "ax-plat-aarch64-qemu-virt" -version = "0.5.10" +version = "0.5.9" dependencies = [ "ax-config-macros", "ax-cpu", - "ax-driver", "ax-page-table-entry", "ax-plat", "ax-plat-aarch64-peripherals", - "axklib", "log", - "mmio-api", ] [[package]] name = "ax-plat-aarch64-raspi" -version = "0.5.11" +version = "0.5.10" dependencies = [ "aarch64-cpu 11.2.0", "ax-config-macros", @@ -1397,20 +1348,17 @@ dependencies = [ [[package]] name = "ax-plat-loongarch64-qemu-virt" -version = "0.5.10" +version = "0.5.9" dependencies = [ "ax-config-macros", "ax-cpu", - "ax-driver", "ax-kspin", "ax-lazyinit", "ax-page-table-entry", "ax-plat", - "axklib", "chrono", "log", "loongArch64", - "mmio-api", "uart_16550 0.5.0", ] @@ -1426,18 +1374,15 @@ dependencies = [ [[package]] name = "ax-plat-riscv64-qemu-virt" -version = "0.5.9" +version = "0.5.8" dependencies = [ "ax-config-macros", "ax-cpu", - "ax-driver", "ax-kspin", "ax-lazyinit", "ax-plat", "ax-riscv-plic", - "axklib", "log", - "mmio-api", "riscv 0.16.0", "riscv_goldfish", "sbi-rt 0.0.3", @@ -1446,56 +1391,31 @@ dependencies = [ [[package]] name = "ax-plat-riscv64-sg2002" -version = "0.3.6" +version = "0.3.5" dependencies = [ "ax-config-macros", "ax-cpu", - "ax-driver", "ax-kspin", "ax-lazyinit", "ax-plat", "ax-riscv-plic", - "axklib", + "dw_uart_rs", "log", - "rd-block", "riscv 0.16.0", "sbi-rt 0.0.3", - "sg200x-bsp", - "some-serial", - "spin 0.12.0", -] - -[[package]] -name = "ax-plat-riscv64-visionfive2" -version = "0.1.4" -dependencies = [ - "ax-config-macros", - "ax-cpu", - "ax-kspin", - "ax-lazyinit", - "ax-plat", - "ax-riscv-plic", - "log", - "rdrive", - "riscv 0.14.0", - "riscv_goldfish", - "sbi-rt 0.0.3", - "uart_16550 0.4.0", ] [[package]] name = "ax-plat-x86-pc" -version = "0.5.10" +version = "0.5.9" dependencies = [ "ax-config-macros", "ax-cpu", - "ax-driver", "ax-int-ratio", "ax-kspin", "ax-lazyinit", "ax-percpu", "ax-plat", - "axklib", "bitflags 2.11.1", "heapless 0.9.3", "log", @@ -1508,34 +1428,9 @@ dependencies = [ "x86_rtc", ] -[[package]] -name = "ax-plat-x86-qemu-q35" -version = "0.4.8" -dependencies = [ - "ax-config-macros", - "ax-cpu", - "ax-driver", - "ax-int-ratio", - "ax-kspin", - "ax-lazyinit", - "ax-percpu", - "ax-plat", - "axklib", - "bitflags 2.11.1", - "heapless 0.9.3", - "log", - "multiboot", - "raw-cpuid 11.6.0", - "uart_16550 0.4.0", - "x2apic", - "x86", - "x86_64", - "x86_rtc", -] - [[package]] name = "ax-posix-api" -version = "0.5.16" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-config", @@ -1551,8 +1446,9 @@ dependencies = [ "ax-task", "bindgen 0.72.1", "flatten_objects", + "lazy_static", "scope-local", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] @@ -1564,7 +1460,7 @@ dependencies = [ [[package]] name = "ax-runtime" -version = "0.5.16" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-config", @@ -1572,7 +1468,6 @@ dependencies = [ "ax-ctor-bare", "ax-display", "ax-driver", - "ax-errno", "ax-fs", "ax-fs-ng", "ax-hal", @@ -1593,10 +1488,6 @@ dependencies = [ "cfg-if", "chrono", "indoc", - "rd-block", - "rd-net", - "rdrive", - "spin 0.12.0", ] [[package]] @@ -1610,14 +1501,12 @@ dependencies = [ name = "ax-shell" version = "0.3.1" dependencies = [ - "ax-driver", - "ax-hal", "ax-std", ] [[package]] name = "ax-std" -version = "0.5.15" +version = "0.5.14" dependencies = [ "ax-api", "ax-errno", @@ -1626,12 +1515,12 @@ dependencies = [ "ax-kspin", "ax-lazyinit", "lock_api", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] name = "ax-sync" -version = "0.5.15" +version = "0.5.14" dependencies = [ "ax-kspin", "ax-lockdep", @@ -1642,21 +1531,18 @@ dependencies = [ [[package]] name = "ax-task" -version = "0.5.16" +version = "0.5.15" dependencies = [ - "ax-alloc", "ax-config", "ax-cpumask", "ax-crate-interface", "ax-errno", "ax-hal", - "ax-ipi", "ax-kernel-guard", "ax-kspin", "ax-lazyinit", "ax-lockdep", "ax-memory-addr", - "ax-mm", "ax-percpu", "ax-sched", "ax-timer-list", @@ -1665,7 +1551,7 @@ dependencies = [ "extern-trait", "futures-util", "log", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] @@ -1683,11 +1569,10 @@ dependencies = [ [[package]] name = "axaddrspace" -version = "0.5.11" +version = "0.5.10" dependencies = [ "assert_matches", "ax-errno", - "ax-kspin", "ax-lazyinit", "ax-memory-addr", "ax-memory-set", @@ -1700,27 +1585,28 @@ dependencies = [ "lazy_static", "log", "numeric-enum-macro", + "spin 0.10.0", "x86", ] [[package]] name = "axbacktrace" -version = "0.4.0" +version = "0.3.9" dependencies = [ - "addr2line 0.26.1", + "addr2line", "axpanic", "cfg-if", - "gimli 0.33.0", + "gimli", "log", "paste", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] name = "axbuild" -version = "0.4.8" +version = "0.4.7" dependencies = [ - "addr2line 0.26.1", + "addr2line", "anyhow", "ax-config-gen", "axvmconfig", @@ -1762,11 +1648,10 @@ dependencies = [ [[package]] name = "axdevice" -version = "0.4.10" +version = "0.4.9" dependencies = [ "arm_vgic", "ax-errno", - "ax-kspin", "ax-memory-addr", "axaddrspace", "axdevice_base", @@ -1775,11 +1660,12 @@ dependencies = [ "log", "range-alloc-arceos", "riscv_vplic", + "spin 0.10.0", ] [[package]] name = "axdevice_base" -version = "0.4.11" +version = "0.4.10" dependencies = [ "ax-errno", "axaddrspace", @@ -1787,6 +1673,16 @@ dependencies = [ "serde", ] +[[package]] +name = "axerrno" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f961d2868582a092fb1e71b90c16cc6f2cbbe7bb5fa7e4bd6fe61d882ce6bb34" +dependencies = [ + "log", + "strum 0.27.2", +] + [[package]] name = "axfatfs" version = "0.1.0-pre.0" @@ -1799,10 +1695,9 @@ dependencies = [ [[package]] name = "axfs-ng-vfs" -version = "0.4.2" +version = "0.4.1" dependencies = [ "ax-errno", - "ax-kspin", "axpoll", "bitflags 2.11.1", "cfg-if", @@ -1810,11 +1705,12 @@ dependencies = [ "inherit-methods-macro", "log", "smallvec", + "spin 0.10.0", ] [[package]] name = "axhvc" -version = "0.4.8" +version = "0.4.7" dependencies = [ "ax-errno", ] @@ -1833,37 +1729,102 @@ dependencies = [ [[package]] name = "axklib" -version = "0.5.9" +version = "0.5.8" dependencies = [ "ax-errno", "ax-memory-addr", + "trait-ffi", +] + +[[package]] +name = "axpanic" +version = "0.1.0" + +[[package]] +name = "axplat-dyn" +version = "0.6.1" +dependencies = [ + "anyhow", + "arm-scmi-rs", + "ax-alloc", + "ax-arm-pl031", + "ax-config-macros", + "ax-cpu", + "ax-driver-base", + "ax-driver-block", + "ax-driver-net", + "ax-driver-virtio", + "ax-errno", + "ax-kspin", + "ax-memory-addr", + "ax-percpu", + "ax-plat", + "axklib", + "crab-usb", "dma-api", + "dwmmc-host", + "eth-intel", + "fdt-edit", + "heapless 0.9.3", + "log", "mmio-api", - "trait-ffi", + "pcie", + "phytium-mci-host", + "rd-block", + "rd-net", + "rdif-clk", + "rdif-pcie", + "rdrive", + "realtek-rtl8125", + "rk3588-pci", + "rockchip-npu", + "rockchip-pm", + "rockchip-soc", + "sdhci-host", + "sdmmc-protocol", + "some-serial", + "somehal", + "spin 0.10.0", ] [[package]] -name = "axpanic" -version = "0.1.0" +name = "axplat-riscv64-visionfive2" +version = "0.1.3" +dependencies = [ + "ax-config-macros", + "ax-cpu", + "ax-kspin", + "ax-lazyinit", + "ax-plat", + "ax-riscv-plic", + "log", + "riscv 0.14.0", + "riscv_goldfish", + "sbi-rt 0.0.3", + "uart_16550 0.4.0", +] [[package]] -name = "axplat-dyn" -version = "0.6.2" +name = "axplat-x86-qemu-q35" +version = "0.4.7" dependencies = [ - "anyhow", "ax-config-macros", "ax-cpu", - "ax-driver", - "ax-errno", - "ax-memory-addr", + "ax-int-ratio", + "ax-kspin", + "ax-lazyinit", "ax-percpu", "ax-plat", - "axklib", + "bitflags 2.11.1", "heapless 0.9.3", "log", - "rdrive", - "somehal", - "spin 0.12.0", + "multiboot", + "raw-cpuid 11.6.0", + "uart_16550 0.4.0", + "x2apic", + "x86", + "x86_64", + "x86_rtc", ] [[package]] @@ -1874,7 +1835,7 @@ dependencies = [ "bitflags 2.11.1", "futures", "linux-raw-sys 0.12.1", - "spin 0.12.0", + "spin 0.10.0", "tokio", ] @@ -1932,7 +1893,7 @@ dependencies = [ [[package]] name = "axvcpu" -version = "0.5.9" +version = "0.5.8" dependencies = [ "ax-errno", "ax-memory-addr", @@ -1943,7 +1904,7 @@ dependencies = [ [[package]] name = "axvisor" -version = "0.5.8" +version = "0.5.7" dependencies = [ "aarch64-cpu-ext", "anyhow", @@ -1951,7 +1912,6 @@ dependencies = [ "ax-config", "ax-cpumask", "ax-crate-interface", - "ax-driver", "ax-errno", "ax-hal", "ax-kernel-guard", @@ -1963,7 +1923,6 @@ dependencies = [ "ax-percpu", "ax-plat-loongarch64-qemu-virt", "ax-plat-riscv64-qemu-virt", - "ax-plat-x86-qemu-q35", "ax-std", "ax-timer-list", "axaddrspace", @@ -1973,6 +1932,7 @@ dependencies = [ "axhvc", "axklib", "axplat-dyn", + "axplat-x86-qemu-q35", "axvcpu", "axvisor_api", "axvm", @@ -1983,15 +1943,15 @@ dependencies = [ "extern-trait", "fdt-parser", "hashbrown 0.14.5", + "lazy_static", "log", "prettyplease", - "proc-macro2", "quote", "rdif-intc", "rdrive", "riscv_vcpu", "riscv_vplic", - "spin 0.12.0", + "spin 0.10.0", "syn 2.0.117", "tokio", "toml 0.9.12+spec-1.1.0", @@ -1999,7 +1959,7 @@ dependencies = [ [[package]] name = "axvisor_api" -version = "0.5.11" +version = "0.5.10" dependencies = [ "ax-cpumask", "ax-crate-interface", @@ -2020,13 +1980,12 @@ dependencies = [ [[package]] name = "axvm" -version = "0.5.9" +version = "0.5.8" dependencies = [ "arm_vcpu", "arm_vgic", "ax-cpumask", "ax-errno", - "ax-kspin", "ax-memory-addr", "ax-page-table-entry", "ax-page-table-multiarch", @@ -2041,13 +2000,13 @@ dependencies = [ "log", "loongarch_vcpu", "riscv_vcpu", - "spin 0.12.0", + "spin 0.10.0", "x86_vcpu", ] [[package]] name = "axvmconfig" -version = "0.5.2" +version = "0.5.1" dependencies = [ "ax-errno", "clap", @@ -2096,26 +2055,6 @@ dependencies = [ "volatile 0.3.0", ] -[[package]] -name = "bincode" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" -dependencies = [ - "bincode_derive", - "serde", - "unty", -] - -[[package]] -name = "bincode_derive" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" -dependencies = [ - "virtue", -] - [[package]] name = "bindgen" version = "0.70.1" @@ -2202,6 +2141,17 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "bitfield-struct" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f44ed5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -2283,12 +2233,12 @@ dependencies = [ [[package]] name = "buddy-slab-allocator" -version = "0.4.1" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a844607dec426282e05649372acdc1170b08ba57879be9d3216184ed6dbfd3b" dependencies = [ - "divan", "log", - "rand 0.10.1", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] @@ -2308,9 +2258,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.3" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bwbench-client" @@ -2467,17 +2417,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" -[[package]] -name = "chacha20" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" -dependencies = [ - "cfg-if", - "cpufeatures 0.3.0", - "rand_core 0.10.1", -] - [[package]] name = "chrono" version = "0.4.44" @@ -2550,7 +2489,6 @@ dependencies = [ "anstyle", "clap_lex", "strsim 0.11.1", - "terminal_size", ] [[package]] @@ -2623,9 +2561,9 @@ dependencies = [ [[package]] name = "compact_str" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd622ebbb56a5b2ccb651b32b911cdeb2a9b4b11776b2473bf26a26a286244e" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" dependencies = [ "castaway", "cfg-if", @@ -2637,9 +2575,9 @@ dependencies = [ [[package]] name = "compact_str" -version = "0.9.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" +checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a" dependencies = [ "castaway", "cfg-if", @@ -2658,12 +2596,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "condtype" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" - [[package]] name = "console" version = "0.16.3" @@ -2750,15 +2682,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48" -[[package]] -name = "cpp_demangle" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" -dependencies = [ - "cfg-if", -] - [[package]] name = "cpp_demangle" version = "0.5.1" @@ -2803,7 +2726,7 @@ dependencies = [ "mbarrier", "nb", "num_enum", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", "trait-ffi", @@ -3017,9 +2940,9 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" dependencies = [ "hybrid-array", ] @@ -3101,7 +3024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "321ec774d27fafc66e812034d0025f8858bd7d9095304ff8fc200e0b9f9cc257" dependencies = [ "ahash 0.8.12", - "compact_str 0.8.2", + "compact_str 0.8.1", "crossbeam-channel", "cursive-macros", "enum-map", @@ -3361,39 +3284,14 @@ checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer 0.12.0", "const-oid", - "crypto-common 0.2.2", + "crypto-common 0.2.1", ] [[package]] name = "displaydoc" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "divan" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a405457ec78b8fe08b0e32b4a3570ab5dff6dd16eb9e76a5ee0a9d9cbd898933" -dependencies = [ - "cfg-if", - "clap", - "condtype", - "divan-macros", - "libc", - "regex-lite", -] - -[[package]] -name = "divan-macros" -version = "0.1.21" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9556bc800956545d6420a640173e5ba7dfa82f38d3ea5a167eb555bc69ac3323" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", @@ -3405,11 +3303,11 @@ name = "dma-api" version = "0.7.3" dependencies = [ "aarch64-cpu-ext", - "ax-kspin", "cfg-if", "derive_more", "log", "mbarrier", + "spin 0.10.0", "thiserror 2.0.18", ] @@ -3464,11 +3362,27 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dw_apb_uart" +version = "0.1.2" +dependencies = [ + "tock-registers 0.10.1", +] + +[[package]] +name = "dw_uart_rs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3751978e2d9bced3cb480631bb2c14098357ae269ac95475720aee545c6dcd" +dependencies = [ + "tock-registers 0.8.1", +] + [[package]] name = "dwmmc-host" version = "0.1.1" dependencies = [ - "bitfield-struct", + "bitfield-struct 0.11.0", "dma-api", "embedded-hal", "log", @@ -3485,9 +3399,9 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.16.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "embedded-graphics" @@ -3609,9 +3523,9 @@ dependencies = [ [[package]] name = "enumset" -version = "1.1.13" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839c4174b41e75c8f7306110b2c51996a293b8d1d850edd529011841d9fede7d" +checksum = "7f96a4a12fe60ac746ae295a1a4ecb5bb02debc20856506c8635288065f142de" dependencies = [ "enumset_derive", ] @@ -3864,9 +3778,9 @@ checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5" [[package]] name = "fitimage" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92edd7c1c55efd27b5a17dd6d505affafcfe48dfaed7423d4c4ae7361e56a7d8" +checksum = "8cb4d07a1e7a76a7ac4b6b754d45670b1a82c8a0484d80cceeb30c99ad65ce1d" dependencies = [ "anyhow", "byteorder", @@ -4043,9 +3957,9 @@ checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-timer" -version = "3.0.4" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" @@ -4119,7 +4033,6 @@ dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", - "rand_core 0.10.1", "wasip2", "wasip3", ] @@ -4134,16 +4047,6 @@ dependencies = [ "weezl", ] -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" -dependencies = [ - "fallible-iterator", - "stable_deref_trait", -] - [[package]] name = "gimli" version = "0.33.0" @@ -4159,6 +4062,39 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "goblin" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983a6aafb3b12d4c41ea78d39e189af4298ce747353945ff5105b54a056e5cd9" +dependencies = [ + "log", + "plain", + "scroll", +] + +[[package]] +name = "gpt_disk_io" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb194b955ba40423510e4342a077df49c70a599cf692cd0e30a86a32d8a9c7b1" +dependencies = [ + "bytemuck", + "gpt_disk_types", +] + +[[package]] +name = "gpt_disk_types" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3972298dc4cef533492b66bdd75747133618917f44885a11dc8abd24c4e3f1f0" +dependencies = [ + "bytemuck", + "crc", + "ucs2", + "uguid", +] + [[package]] name = "h2" version = "0.4.14" @@ -4242,11 +4178,6 @@ name = "hashbrown" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash 0.2.0", -] [[package]] name = "heapless" @@ -4280,6 +4211,18 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hello-kernel" +version = "0.3.1" +dependencies = [ + "ax-plat", + "ax-plat-aarch64-qemu-virt", + "ax-plat-loongarch64-qemu-virt", + "ax-plat-riscv64-qemu-virt", + "ax-plat-x86-pc", + "cfg-if", +] + [[package]] name = "hermit-abi" version = "0.5.2" @@ -4294,9 +4237,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "http" -version = "1.4.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", "itoa", @@ -4654,6 +4597,18 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "int-enum" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e366a1634cccc76b4cfd3e7580de9b605e4d93f1edac48d786c1f867c0def495" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.117", +] + [[package]] name = "intrusive-collections" version = "0.9.7" @@ -4679,6 +4634,20 @@ version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +[[package]] +name = "irq-kernel" +version = "0.3.1" +dependencies = [ + "ax-config-macros", + "ax-cpu", + "ax-plat", + "ax-plat-aarch64-qemu-virt", + "ax-plat-loongarch64-qemu-virt", + "ax-plat-riscv64-qemu-virt", + "ax-plat-x86-pc", + "cfg-if", +] + [[package]] name = "is-terminal" version = "0.4.17" @@ -4744,9 +4713,9 @@ dependencies = [ [[package]] name = "jiff" -version = "0.2.27" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "392c70591e8749fe235ddaf513e6f58b26bce3dcc16524cecc8936f75afa161e" +checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" dependencies = [ "jiff-static", "log", @@ -4757,9 +4726,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.27" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b605b0c050d845fc355bb11eb3f9a8deddc218ea60c76e61aa1f2adfb2c96a" +checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" dependencies = [ "proc-macro2", "quote", @@ -4791,9 +4760,9 @@ dependencies = [ [[package]] name = "jkconfig" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4cbaedffb63dabcbab61e23e0adc1fc7bc0d7420f2f56124e2bc0002d9274ab" +checksum = "d8746ebf553e6e9d0620a918072432b44aa9563f6f19d17432b613828df708a1" dependencies = [ "anyhow", "cargo_metadata", @@ -4879,9 +4848,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" dependencies = [ "cfg-if", "futures-util", @@ -4889,6 +4858,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kapi" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93505ad306e00dcd1b283c328110de980a1b1ac00e127c0eba192cf5500159d9" +dependencies = [ + "axerrno", + "kmod-tools", + "paste", +] + [[package]] name = "kasm-aarch64" version = "0.2.1" @@ -4910,6 +4890,12 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "kbindings" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "753ac4e7753fa007b8f7828d0e01e9ececa48b689460e6380fb36bbf74654a8d" + [[package]] name = "kernel-elf-parser" version = "0.3.4" @@ -4931,12 +4917,51 @@ dependencies = [ ] [[package]] -name = "keyboard-types" -version = "0.8.3" +name = "keyboard-types" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" +dependencies = [ + "bitflags 2.11.1", +] + +[[package]] +name = "kmacro-tools" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf3202c44ae67bf2647146a753b2b09e9b48db0fd5db1686f595b6682e7ca72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "kmod-loader" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "550f9b0e0c6e219e177bc0c6e6a10630deec3befdc3c9951b2ce7fb0b3f3070c" +dependencies = [ + "axerrno", + "bitfield-struct 0.13.0", + "bitflags 2.11.1", + "cfg-if", + "goblin", + "int-enum", + "kapi", + "kmod-tools", + "log", + "paste", +] + +[[package]] +name = "kmod-tools" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" +checksum = "80053048fd6814e4fcd5bda5f23a88d2deffb5d70ac7544f8312f706296c503e" dependencies = [ - "bitflags 2.11.1", + "kbindings", + "kmacro-tools", ] [[package]] @@ -4952,12 +4977,6 @@ dependencies = [ "yaxpeax-x86", ] -[[package]] -name = "ksym" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b543b77d8cfa33302b6b51b6a255f9e85b06997b7c4a0a7354fcc8304036eb09" - [[package]] name = "ktest-helper" version = "0.1.1" @@ -4966,19 +4985,6 @@ dependencies = [ "log", ] -[[package]] -name = "ktracepoint" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30aa94490986294aa3a19dc3fbc6b7eefe3fbbac18c323c4153a0cfd1a7a0b74" -dependencies = [ - "log", - "lru 0.18.0", - "paste", - "static-keys", - "tp-lexer", -] - [[package]] name = "lab" version = "0.11.0" @@ -4990,6 +4996,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin 0.9.8", +] [[package]] name = "leb128fmt" @@ -5135,9 +5144,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.30" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "loongArch64" @@ -5151,18 +5160,14 @@ dependencies = [ [[package]] name = "loongarch_vcpu" -version = "0.5.3" +version = "0.5.2" dependencies = [ "ax-errno", - "ax-kspin", - "ax-memory-addr", - "ax-page-table-multiarch", "ax-percpu", "axaddrspace", "axvcpu", - "axvisor_api", "log", - "loongArch64", + "spin 0.10.0", ] [[package]] @@ -5174,15 +5179,6 @@ dependencies = [ "hashbrown 0.16.1", ] -[[package]] -name = "lru" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9" -dependencies = [ - "hashbrown 0.17.1", -] - [[package]] name = "lru-slab" version = "0.1.2" @@ -5274,9 +5270,9 @@ checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0" [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" @@ -5487,9 +5483,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-derive" @@ -5609,21 +5605,10 @@ dependencies = [ "mmio-api", "pcie", "rd-block", - "spin 0.12.0", + "spin 0.10.0", "tock-registers 0.10.1", ] -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "flate2", - "memchr", - "ruzstd", -] - [[package]] name = "object" version = "0.38.1" @@ -5681,9 +5666,9 @@ dependencies = [ [[package]] name = "ostool" -version = "0.21.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d0470fd8561e21f458d865490c928ebff45c0e1037a45f634a527acb8f15ff" +checksum = "13501cb17f0511a3f470b7758dadee6f5740bc9a948f7391140866b50f0f9b5e" dependencies = [ "anyhow", "async-trait", @@ -5697,7 +5682,7 @@ dependencies = [ "fitimage", "futures", "indicatif", - "jkconfig 0.2.4", + "jkconfig 0.2.3", "log", "lzma-rs", "network-interface", @@ -5917,7 +5902,7 @@ dependencies = [ name = "phytium-mci-host" version = "0.1.1" dependencies = [ - "bitfield-struct", + "bitfield-struct 0.11.0", "dma-api", "log", "mmio-api", @@ -5943,6 +5928,12 @@ version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "plotters" version = "0.3.7" @@ -6126,30 +6117,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "qemu-plugin" -version = "10.1.0-v2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19df903439a896a96aec394ca3e1b6e0fdbd92b8112aec484cd9a56c9453e806" -dependencies = [ - "anyhow", - "lazy_static", - "libc", - "libloading", - "qemu-plugin-sys", - "thiserror 2.0.18", - "windows", -] - -[[package]] -name = "qemu-plugin-sys" -version = "10.1.0-v2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626809b8b33148371d3e2754834b68e27ff0bf5a5b326a67d83fccd4e1699cab" -dependencies = [ - "anyhow", -] - [[package]] name = "qoi" version = "0.4.1" @@ -6159,27 +6126,6 @@ dependencies = [ "bytemuck", ] -[[package]] -name = "qperf" -version = "0.1.0" -dependencies = [ - "anyhow", - "bincode", - "crossbeam-channel", - "qemu-plugin", - "zerocopy", -] - -[[package]] -name = "qperf-analyzer" -version = "0.1.0" -dependencies = [ - "addr2line 0.25.1", - "anyhow", - "bincode", - "clap", -] - [[package]] name = "quinn" version = "0.11.9" @@ -6270,7 +6216,7 @@ dependencies = [ "dma-api", "rd-block", "rdif-block", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] @@ -6300,8 +6246,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ - "chacha20", - "getrandom 0.4.2", "rand_core 0.10.1", ] @@ -6382,12 +6326,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293" dependencies = [ "bitflags 2.11.1", - "compact_str 0.9.1", + "compact_str 0.9.0", "hashbrown 0.16.1", "indoc", "itertools 0.14.0", "kasuari", - "lru 0.16.4", + "lru", "strum 0.27.2", "thiserror 2.0.18", "unicode-segmentation", @@ -6494,10 +6438,6 @@ dependencies = [ "spin_on", ] -[[package]] -name = "rd-block-volume" -version = "0.1.0" - [[package]] name = "rd-net" version = "0.1.1" @@ -6542,14 +6482,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "rdif-display" -version = "0.1.0" -dependencies = [ - "rdif-base", - "thiserror 2.0.18", -] - [[package]] name = "rdif-eth" version = "0.2.1" @@ -6559,14 +6491,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "rdif-input" -version = "0.1.0" -dependencies = [ - "rdif-base", - "thiserror 2.0.18", -] - [[package]] name = "rdif-intc" version = "0.14.1" @@ -6600,7 +6524,7 @@ dependencies = [ "futures", "heapless 0.9.3", "rdif-base", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", ] @@ -6618,14 +6542,6 @@ dependencies = [ "rdif-base", ] -[[package]] -name = "rdif-vsock" -version = "0.1.0" -dependencies = [ - "rdif-base", - "thiserror 2.0.18", -] - [[package]] name = "rdrive" version = "0.20.1" @@ -6641,7 +6557,7 @@ dependencies = [ "rdif-intc", "rdif-pcie", "rdrive-macros", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", ] @@ -6662,7 +6578,7 @@ dependencies = [ "log", "mmio-api", "rdif-eth", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", ] @@ -6719,12 +6635,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "regex-lite" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" - [[package]] name = "regex-syntax" version = "0.8.10" @@ -6742,9 +6652,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.13.4" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" dependencies = [ "base64 0.22.1", "bytes", @@ -6901,7 +6811,7 @@ checksum = "07aac72f95e774476db82916d79f2d303191310393830573c1ab5c821b21660a" [[package]] name = "riscv_vcpu" -version = "0.5.9" +version = "0.5.8" dependencies = [ "ax-crate-interface", "ax-errno", @@ -6926,16 +6836,16 @@ dependencies = [ [[package]] name = "riscv_vplic" -version = "0.4.12" +version = "0.4.11" dependencies = [ "ax-errno", - "ax-kspin", "axaddrspace", "axdevice_base", "axvisor_api", "bitmaps", "log", "riscv-h", + "spin 0.10.0", ] [[package]] @@ -6992,16 +6902,19 @@ dependencies = [ [[package]] name = "rockchip-npu" -version = "0.2.1" +version = "0.2.0" dependencies = [ "aarch64-cpu-ext", "bitflags 2.11.1", "dma-api", + "fdt-edit", "log", "mbarrier", "num-align", "rdif-base", - "spin 0.12.0", + "rockchip-pm", + "rockchip-soc", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", ] @@ -7018,9 +6931,8 @@ dependencies = [ [[package]] name = "rockchip-soc" -version = "0.3.0" +version = "0.2.0" dependencies = [ - "ax-kspin", "bitflags 2.11.1", "dma-api", "enum_dispatch", @@ -7028,24 +6940,20 @@ dependencies = [ "log", "mbarrier", "num-align", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", ] [[package]] name = "rsext4" -version = "0.4.1" +version = "0.4.0" dependencies = [ "bitflags 2.11.1", + "lazy_static", "log", - "spin 0.12.0", ] -[[package]] -name = "rust-hello" -version = "0.1.0" - [[package]] name = "rust_decimal" version = "1.42.0" @@ -7327,7 +7235,7 @@ version = "0.3.7" dependencies = [ "ax-percpu", "ctor 0.6.3", - "spin 0.12.0", + "spin 0.10.0", ] [[package]] @@ -7336,6 +7244,26 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "scroll" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1257cd4248b4132760d6524d6dda4e053bc648c9070b960929bf50cfb1e7add" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed76efe62313ab6610570951494bdaa81568026e0318eaa55f167de70eeea67d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "sdhci-host" version = "0.1.1" @@ -7438,9 +7366,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", @@ -7513,13 +7441,13 @@ dependencies = [ [[package]] name = "sg2002-tpu" -version = "0.1.2" +version = "0.1.1" dependencies = [ "ax-dma", "ax-errno", - "ax-kspin", "ax-memory-addr", "log", + "spin 0.10.0", ] [[package]] @@ -7651,12 +7579,23 @@ version = "0.1.1-preview.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e202ff0a10a30a13384768edcda5b00eeeafd7dda1784234662f43dba170e9b2" dependencies = [ - "bitfield-struct", + "bitfield-struct 0.11.0", "log", "thiserror 2.0.18", "volatile 0.6.1", ] +[[package]] +name = "simple-sdmmc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65f2f7127074b52811ae3b4757e33865a60a8b46e1402c028c301139e0b00d92" +dependencies = [ + "bitfield-struct 0.11.0", + "log", + "volatile 0.6.1", +] + [[package]] name = "siphasher" version = "1.0.3" @@ -7714,6 +7653,23 @@ dependencies = [ "managed", ] +[[package]] +name = "smp-kernel" +version = "0.3.1" +dependencies = [ + "ax-config-macros", + "ax-cpu", + "ax-memory-addr", + "ax-percpu", + "ax-plat", + "ax-plat-aarch64-qemu-virt", + "ax-plat-loongarch64-qemu-virt", + "ax-plat-riscv64-qemu-virt", + "ax-plat-x86-pc", + "cfg-if", + "const-str", +] + [[package]] name = "socket2" version = "0.6.3" @@ -7728,7 +7684,6 @@ dependencies = [ name = "some-serial" version = "0.4.1" dependencies = [ - "ax-kspin", "bitflags 2.11.1", "enum_dispatch", "fdt-edit", @@ -7737,6 +7692,7 @@ dependencies = [ "rdif-intc", "rdif-serial", "rdrive", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", "x86", @@ -7777,7 +7733,7 @@ dependencies = [ "smccc", "some-serial", "somehal-macros", - "spin 0.12.0", + "spin 0.10.0", "syn 2.0.117", "thiserror 2.0.18", "tock-registers 0.10.1", @@ -7801,7 +7757,7 @@ dependencies = [ "rdrive", "someboot", "somehal-macros", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", ] @@ -7818,15 +7774,18 @@ dependencies = [ [[package]] name = "spin" -version = "0.10.0" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] [[package]] name = "spin" -version = "0.12.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1527984ca054dfca79333baec451042863f485fbee01b7bf6d911de915cac865" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" dependencies = [ "lock_api", ] @@ -7876,7 +7835,7 @@ dependencies = [ [[package]] name = "starry-kernel" -version = "0.5.12" +version = "0.5.11" dependencies = [ "ax-alloc", "ax-config", @@ -7886,6 +7845,7 @@ dependencies = [ "ax-errno", "ax-feat", "ax-fs-ng", + "ax-hal", "ax-input", "ax-io", "ax-ipi", @@ -7914,18 +7874,19 @@ dependencies = [ "crab-usb", "ddebug", "downcast-rs", + "dw_apb_uart", "enum_dispatch", "event-listener", "extern-trait", "flatten_objects", - "gimli 0.33.0", + "gimli", "hashbrown 0.16.1", "indoc", "inherit-methods-macro", "kernel-elf-parser", + "kmod-loader", "kprobe", - "ksym", - "ktracepoint", + "lazy_static", "linux-raw-sys 0.12.1", "lock_api", "num_enum", @@ -7938,8 +7899,7 @@ dependencies = [ "sg2002-tpu", "sg200x-bsp", "slab", - "some-serial", - "spin 0.12.0", + "spin 0.10.0", "starry-process", "starry-signal", "starry-vm", @@ -7956,7 +7916,7 @@ dependencies = [ [[package]] name = "starry-process" -version = "0.4.7" +version = "0.4.6" dependencies = [ "ax-kspin", "ax-lazyinit", @@ -7966,7 +7926,7 @@ dependencies = [ [[package]] name = "starry-signal" -version = "0.7.0" +version = "0.6.2" dependencies = [ "ax-cpu", "ax-errno", @@ -7984,7 +7944,7 @@ dependencies = [ [[package]] name = "starry-vm" -version = "0.5.9" +version = "0.5.8" dependencies = [ "ax-errno", "bytemuck", @@ -7993,14 +7953,14 @@ dependencies = [ [[package]] name = "starryos" -version = "0.5.12" +version = "0.5.11" dependencies = [ "anyhow", - "ax-driver", "ax-feat", - "ax-hal", + "ax-plat-riscv64-sg2002", "axbuild", "axplat-dyn", + "axplat-riscv64-visionfive2", "clap", "starry-kernel", "tokio", @@ -8174,9 +8134,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.46" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" +checksum = "22692a6476a21fa75fdfc11d452fda482af402c008cdbaf3476414e122040973" dependencies = [ "filetime", "libc", @@ -8196,16 +8156,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "terminal_size" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" -dependencies = [ - "rustix 1.1.4", - "windows-sys 0.61.2", -] - [[package]] name = "terminfo" version = "0.9.0" @@ -8787,12 +8737,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" -[[package]] -name = "tp-lexer" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352c5c9721b4ded5d79c4ad60111b977601c09b202e860a3d79a6e4bdb098b0" - [[package]] name = "tracing" version = "0.1.44" @@ -8934,9 +8878,9 @@ dependencies = [ [[package]] name = "uboot-shell" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2237321472e37a34980340e0a6f8ba406167fb010209ead2f0e594bdfb718e02" +checksum = "c3b3d5d2959cc2e9a28cb2c4ad30f99a33f6831f4f159b08c696604b9494b672" dependencies = [ "colored", "futures", @@ -9001,6 +8945,9 @@ name = "uguid" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c8352f8c05e47892e7eaf13b34abd76a7f4aeaf817b716e88789381927f199c" +dependencies = [ + "bytemuck", +] [[package]] name = "uluru" @@ -9079,12 +9026,6 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -[[package]] -name = "unty" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" - [[package]] name = "ureq" version = "3.3.0" @@ -9134,7 +9075,7 @@ dependencies = [ "futures", "log", "num_enum", - "spin 0.12.0", + "spin 0.10.0", "thiserror 2.0.18", ] @@ -9193,13 +9134,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "uvc-fps" -version = "0.1.0" -dependencies = [ - "pkg-config", -] - [[package]] name = "uvc-frame-parser" version = "0.1.1" @@ -9249,12 +9183,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "virtue" -version = "0.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" - [[package]] name = "vm-fdt" version = "0.3.0" @@ -9347,9 +9275,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.122" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" dependencies = [ "cfg-if", "once_cell", @@ -9360,9 +9288,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.72" +version = "0.4.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" +checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" dependencies = [ "js-sys", "wasm-bindgen", @@ -9370,9 +9298,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9380,9 +9308,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" dependencies = [ "bumpalo", "proc-macro2", @@ -9393,9 +9321,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.121" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" dependencies = [ "unicode-ident", ] @@ -9455,9 +9383,9 @@ checksum = "dba9c05687e501b2710833fbe2cc7ff8cc24411fb0d81967498ca44598942f88" [[package]] name = "web-sys" -version = "0.3.99" +version = "0.3.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" +checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" dependencies = [ "js-sys", "wasm-bindgen", @@ -10062,11 +9990,10 @@ dependencies = [ [[package]] name = "x86_vcpu" -version = "0.5.9" +version = "0.5.8" dependencies = [ "ax-crate-interface", "ax-errno", - "ax-kspin", "ax-memory-addr", "ax-page-table-entry", "axaddrspace", @@ -10081,6 +10008,7 @@ dependencies = [ "numeric-enum-macro", "paste", "raw-cpuid 11.6.0", + "spin 0.10.0", "tock-registers 0.10.1", "x86", "x86_64", @@ -10089,7 +10017,7 @@ dependencies = [ [[package]] name = "x86_vlapic" -version = "0.4.10" +version = "0.4.9" dependencies = [ "ax-errno", "ax-memory-addr", @@ -10166,9 +10094,9 @@ dependencies = [ [[package]] name = "yaxpeax-x86" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a159e15f66ce40b5dfc28213366f8ff42ff8f0508e2e72e431c62573f025ac5e" +checksum = "9a9a30b7dd533c7b1a73eaf7c4ea162a7a632a2bb29b9fff47d8f2cc8513a883" dependencies = [ "cfg-if", "num-traits", diff --git a/components/axplat_crates/examples/hello-kernel/linker_x86_64.lds b/components/axplat_crates/examples/hello-kernel/linker_x86_64.lds new file mode 100644 index 0000000000..113e7914c0 --- /dev/null +++ b/components/axplat_crates/examples/hello-kernel/linker_x86_64.lds @@ -0,0 +1,52 @@ +ENTRY(_start) +SECTIONS +{ + . = 0xffff800000200000; + _skernel = .; + + .text : ALIGN(4K) { + _stext = .; + *(.text.boot) + *(.text .text.*) + _etext = .; + } + + .rodata : ALIGN(4K) { + _srodata = .; + *(.rodata .rodata.*) + _erodata = .; + } + + .data : ALIGN(4K) { + _sdata = .; + *(.data .data.*) + *(.got .got.*) + } + + . = ALIGN(4K); + _percpu_start = .; + _percpu_end = _percpu_start + SIZEOF(.percpu); + .percpu 0x0 : AT(_percpu_start) { + _percpu_load_start = .; + *(.percpu .percpu.*) + _percpu_load_end = .; + . = _percpu_load_start + ALIGN(64) * 1; + } + . = _percpu_end; + _edata = .; + + .bss : AT(.) ALIGN(4K) { + *(.bss.stack) + . = ALIGN(4K); + _sbss = .; + *(.bss .bss.*) + *(COMMON) + _ebss = .; + } + + _ekernel = .; + + /DISCARD/ : { + *(.comment) + } +} diff --git a/components/axplat_crates/examples/irq-kernel/linker_x86_64.lds b/components/axplat_crates/examples/irq-kernel/linker_x86_64.lds new file mode 100644 index 0000000000..113e7914c0 --- /dev/null +++ b/components/axplat_crates/examples/irq-kernel/linker_x86_64.lds @@ -0,0 +1,52 @@ +ENTRY(_start) +SECTIONS +{ + . = 0xffff800000200000; + _skernel = .; + + .text : ALIGN(4K) { + _stext = .; + *(.text.boot) + *(.text .text.*) + _etext = .; + } + + .rodata : ALIGN(4K) { + _srodata = .; + *(.rodata .rodata.*) + _erodata = .; + } + + .data : ALIGN(4K) { + _sdata = .; + *(.data .data.*) + *(.got .got.*) + } + + . = ALIGN(4K); + _percpu_start = .; + _percpu_end = _percpu_start + SIZEOF(.percpu); + .percpu 0x0 : AT(_percpu_start) { + _percpu_load_start = .; + *(.percpu .percpu.*) + _percpu_load_end = .; + . = _percpu_load_start + ALIGN(64) * 1; + } + . = _percpu_end; + _edata = .; + + .bss : AT(.) ALIGN(4K) { + *(.bss.stack) + . = ALIGN(4K); + _sbss = .; + *(.bss .bss.*) + *(COMMON) + _ebss = .; + } + + _ekernel = .; + + /DISCARD/ : { + *(.comment) + } +} diff --git a/components/axplat_crates/examples/smp-kernel/linker_x86_64.lds b/components/axplat_crates/examples/smp-kernel/linker_x86_64.lds new file mode 100644 index 0000000000..113e7914c0 --- /dev/null +++ b/components/axplat_crates/examples/smp-kernel/linker_x86_64.lds @@ -0,0 +1,52 @@ +ENTRY(_start) +SECTIONS +{ + . = 0xffff800000200000; + _skernel = .; + + .text : ALIGN(4K) { + _stext = .; + *(.text.boot) + *(.text .text.*) + _etext = .; + } + + .rodata : ALIGN(4K) { + _srodata = .; + *(.rodata .rodata.*) + _erodata = .; + } + + .data : ALIGN(4K) { + _sdata = .; + *(.data .data.*) + *(.got .got.*) + } + + . = ALIGN(4K); + _percpu_start = .; + _percpu_end = _percpu_start + SIZEOF(.percpu); + .percpu 0x0 : AT(_percpu_start) { + _percpu_load_start = .; + *(.percpu .percpu.*) + _percpu_load_end = .; + . = _percpu_load_start + ALIGN(64) * 1; + } + . = _percpu_end; + _edata = .; + + .bss : AT(.) ALIGN(4K) { + *(.bss.stack) + . = ALIGN(4K); + _sbss = .; + *(.bss .bss.*) + *(COMMON) + _ebss = .; + } + + _ekernel = .; + + /DISCARD/ : { + *(.comment) + } +} diff --git a/os/StarryOS/kernel/Cargo.toml b/os/StarryOS/kernel/Cargo.toml index b3e594d8de..8f212e66b5 100644 --- a/os/StarryOS/kernel/Cargo.toml +++ b/os/StarryOS/kernel/Cargo.toml @@ -133,7 +133,9 @@ ax-ipi = { workspace = true } static-keys = "0.8" ddebug = "0.5" kprobe = "0.5" +kmod-loader = "0.2" some-serial = { workspace = true, optional = true } +dw_apb_uart = { workspace = true, features = ["sg2002"], optional = true } sg200x-bsp = { workspace = true, optional = true } # 0.9 to match sg200x-bsp's internal tock-registers; cannot use workspace (0.10) # because Writeable trait must come from the same version as sg200x-bsp's types. diff --git a/os/StarryOS/kernel/src/kmod_loader.rs b/os/StarryOS/kernel/src/kmod_loader.rs new file mode 100644 index 0000000000..b1a1c0d391 --- /dev/null +++ b/os/StarryOS/kernel/src/kmod_loader.rs @@ -0,0 +1,180 @@ +use alloc::{ + alloc::{Layout, alloc, dealloc}, + boxed::Box, +}; + +use ax_memory_addr::{PAGE_SIZE_4K, VirtAddr}; +use kmod_loader::{KernelModuleHelper, SectionMemOps, SectionPerm}; + +#[allow(dead_code)] +struct KmodSectionMem { + ptr: *mut u8, + size: usize, + layout: Layout, +} + +#[allow(dead_code)] +impl KmodSectionMem { + fn new(size: usize) -> Option { + let aligned_size = (size + PAGE_SIZE_4K - 1) & !(PAGE_SIZE_4K - 1); + let layout = Layout::from_size_align(aligned_size, PAGE_SIZE_4K).ok()?; + let ptr = unsafe { alloc(layout) }; + if ptr.is_null() { + return None; + } + unsafe { core::ptr::write_bytes(ptr, 0, aligned_size) }; + Some(Self { + ptr, + size: aligned_size, + layout, + }) + } +} + +impl SectionMemOps for KmodSectionMem { + fn as_ptr(&self) -> *const u8 { + self.ptr + } + + fn as_mut_ptr(&mut self) -> *mut u8 { + self.ptr + } + + fn change_perms(&mut self, perms: SectionPerm) -> bool { + let vaddr = VirtAddr::from(self.ptr as usize); + let mut aspace = ax_mm::kernel_aspace().lock(); + let (_, original_flags, _) = match aspace.page_table().query(vaddr) { + Ok(r) => r, + Err(_) => return false, + }; + let mut new_flags = ax_hal::paging::MappingFlags::empty(); + if perms.contains(SectionPerm::READ) { + new_flags |= ax_hal::paging::MappingFlags::READ; + } + if perms.contains(SectionPerm::WRITE) { + new_flags |= ax_hal::paging::MappingFlags::WRITE; + } + if perms.contains(SectionPerm::EXECUTE) { + new_flags |= ax_hal::paging::MappingFlags::EXECUTE; + } + if aspace.protect(vaddr, self.size, new_flags).is_err() { + return false; + } + for offset in (0..self.size).step_by(PAGE_SIZE_4K) { + ax_hal::asm::flush_tlb(Some(vaddr + offset)); + } + if perms.contains(SectionPerm::EXECUTE) { + ax_hal::asm::flush_icache_all(); + } + drop(aspace); + let _ = original_flags; + true + } +} + +unsafe impl Send for KmodSectionMem {} +unsafe impl Sync for KmodSectionMem {} + +impl Drop for KmodSectionMem { + fn drop(&mut self) { + unsafe { dealloc(self.ptr, self.layout) }; + } +} + +#[allow(dead_code)] +pub struct StarryKmodHelper; + +impl KernelModuleHelper for StarryKmodHelper { + fn vmalloc(size: usize) -> Box { + match KmodSectionMem::new(size) { + Some(mem) => Box::new(mem), + None => { + warn!("kmod: vmalloc failed for size {size}"); + Box::new(KmodSectionMem { + ptr: core::ptr::null_mut(), + size: 0, + layout: Layout::from_size_align(1, 1).unwrap(), + }) + } + } + } + + fn resolve_symbol(_name: &str) -> Option { + warn!("kmod: resolve_symbol not yet available (depends on PR #837 kallsyms)"); + None + } + + fn flsuh_cache(addr: usize, size: usize) { + #[cfg(target_arch = "aarch64")] + ax_hal::asm::clean_dcache_range_to_pou(VirtAddr::from(addr), size); + let _ = (addr, size); + ax_hal::asm::flush_icache_all(); + } +} + +#[allow(dead_code)] +pub fn load_module_from_memory( + elf_data: &[u8], + args: &str, +) -> ax_errno::AxResult> { + let loader = kmod_loader::ModuleLoader::::new(elf_data).map_err(|e| { + warn!("kmod: failed to create loader: {e:?}"); + ax_errno::AxError::Io + })?; + let c_args = alloc::ffi::CString::new(args).map_err(|_| ax_errno::AxError::InvalidInput)?; + loader.load_module(c_args).map_err(|e| { + warn!("kmod: failed to load module: {e:?}"); + ax_errno::AxError::Io + }) +} + +pub fn sys_init_module( + elf_ptr: usize, + elf_len: usize, + args_ptr: usize, +) -> ax_errno::AxResult { + if elf_ptr == 0 || elf_len == 0 { + return Err(ax_errno::AxError::InvalidInput); + } + let elf_data = unsafe { core::slice::from_raw_parts(elf_ptr as *const u8, elf_len) }; + let args = if args_ptr != 0 { + unsafe { + let p = args_ptr as *const i8; + let len = (0..).take_while(|&i| *p.add(i) != 0).count(); + core::str::from_utf8(core::slice::from_raw_parts(p as *const u8, len)).unwrap_or("") + } + } else { + "" + }; + let mut owner = load_module_from_memory(elf_data, args)?; + owner.call_init().map_err(|e| { + warn!("kmod: module init failed: {e:?}"); + ax_errno::AxError::Io + })?; + info!("kmod: module loaded and initialized successfully"); + core::mem::forget(owner); + Ok(0) +} + +pub fn sys_delete_module(_name_ptr: usize, _flags: usize) -> ax_errno::AxResult { + warn!("kmod: delete_module not yet fully implemented"); + Err(ax_errno::AxError::Unsupported) +} + +pub fn sys_finit_module(fd: i32, args_ptr: usize, _flags: usize) -> ax_errno::AxResult { + if fd < 0 { + return Err(ax_errno::AxError::BadFileDescriptor); + } + let args = if args_ptr != 0 { + unsafe { + let p = args_ptr as *const i8; + let len = (0..).take_while(|&i| *p.add(i) != 0).count(); + core::str::from_utf8(core::slice::from_raw_parts(p as *const u8, len)).unwrap_or("") + } + } else { + "" + }; + let _ = (fd, args); + warn!("kmod: finit_module not yet fully implemented (need file fd to content)"); + Err(ax_errno::AxError::Unsupported) +} diff --git a/os/StarryOS/kernel/src/lib.rs b/os/StarryOS/kernel/src/lib.rs index 2024974966..076225b9b0 100644 --- a/os/StarryOS/kernel/src/lib.rs +++ b/os/StarryOS/kernel/src/lib.rs @@ -23,8 +23,8 @@ mod ebpf; mod file; mod kprobe; mod mm; -#[cfg(feature = "ebpf")] mod perf_event; +mod kmod_loader; mod pseudofs; mod stop_machine; mod syscall; diff --git a/os/StarryOS/kernel/src/syscall/mod.rs b/os/StarryOS/kernel/src/syscall/mod.rs index e0de308173..e46ec8c3e0 100644 --- a/os/StarryOS/kernel/src/syscall/mod.rs +++ b/os/StarryOS/kernel/src/syscall/mod.rs @@ -786,6 +786,13 @@ pub fn handle_syscall(uctx: &mut UserContext) { ), #[cfg(not(feature = "ebpf"))] Sysno::bpf | Sysno::perf_event_open => sys_dummy_fd(sysno), + Sysno::init_module => { + crate::kmod_loader::sys_init_module(uctx.arg0(), uctx.arg1(), uctx.arg2()) + } + Sysno::delete_module => crate::kmod_loader::sys_delete_module(uctx.arg0(), uctx.arg1()), + Sysno::finit_module => { + crate::kmod_loader::sys_finit_module(uctx.arg0() as _, uctx.arg1(), uctx.arg2()) + } Sysno::fanotify_init => Err(AxError::Unsupported), diff --git a/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt new file mode 100644 index 0000000000..97bccdbf3a --- /dev/null +++ b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.20) +project(test-kmod-loader C) +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) +add_executable(test-kmod-loader src/main.c) +target_compile_options(test-kmod-loader PRIVATE -Wall -Wextra -Werror) +install(TARGETS test-kmod-loader RUNTIME DESTINATION usr/bin) diff --git a/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c new file mode 100644 index 0000000000..a5220417a9 --- /dev/null +++ b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c @@ -0,0 +1,86 @@ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include +#include +#include + +static int __pass = 0; +static int __fail = 0; + +#define CHECK(cond, msg) do { \ + if (cond) { \ + printf(" PASS | %s:%d | %s\n", __FILE__, __LINE__, msg); \ + __pass++; \ + } else { \ + printf(" FAIL | %s:%d | %s | errno=%d (%s)\n", \ + __FILE__, __LINE__, msg, errno, strerror(errno)); \ + __fail++; \ + } \ +} while(0) + +#define MODULE_START(name) printf("\n--- MODULE: %s ---\n", name) +#define SUMMARY() \ + printf("\n=== SUMMARY: %d passed, %d failed ===\n", __pass, __fail); \ + return __fail > 0 ? 1 : 0 + +static long raw_init_module(void *data, unsigned long len, const char *args) { +#ifdef SYS_init_module + return syscall(SYS_init_module, data, len, args); +#else + errno = ENOSYS; return -1; +#endif +} + +static long raw_finit_module(int fd, const char *args, unsigned int flags) { +#ifdef SYS_finit_module + return syscall(SYS_finit_module, fd, args, flags); +#else + errno = ENOSYS; return -1; +#endif +} + +static long raw_delete_module(const char *name, unsigned int flags) { +#ifdef SYS_delete_module + return syscall(SYS_delete_module, name, flags); +#else + errno = ENOSYS; return -1; +#endif +} + +int main(void) { + printf("=== kmod Loader Test Suite ===\n"); + + MODULE_START("init_module_null"); + CHECK(raw_init_module(NULL, 0, "") < 0, "init_module(NULL,0) returns error"); + + MODULE_START("init_module_invalid_elf"); + uint8_t bad[64]; memset(bad, 0xFF, sizeof(bad)); + CHECK(raw_init_module(bad, sizeof(bad), "") < 0, "init_module(non-ELF) returns error"); + + MODULE_START("init_module_truncated_elf"); + uint8_t hdr[16] = {0x7f,'E','L','F', 2,1,1, 0,0,0,0,0,0,0,0,0}; + CHECK(raw_init_module(hdr, sizeof(hdr), "") < 0, "init_module(truncated) returns error"); + + MODULE_START("finit_module_bad_fd"); + CHECK(raw_finit_module(-1, "", 0) < 0, "finit_module(-1) returns error"); + + MODULE_START("delete_module_nonexistent"); + CHECK(raw_delete_module("no_such_module", 0) < 0, "delete_module(nonexistent) returns error"); + + MODULE_START("init_module_zero_len"); + uint8_t dummy = 0; + CHECK(raw_init_module(&dummy, 0, "") < 0, "init_module(,0,) returns error"); + + MODULE_START("init_module_with_args"); + uint8_t buf[64]; memset(buf, 0, sizeof(buf)); + CHECK(raw_init_module(buf, sizeof(buf), "key=val") < 0, + "init_module(invalid ELF with args) returns error, no crash"); + + SUMMARY(); +} From d152702c1385c69b8c77675cdfcf6487276982de Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Fri, 22 May 2026 12:45:37 +0800 Subject: [PATCH 2/8] fix(starry-kernel): address LKM PR #849 review blocking issues 1. Fix test install path: usr/bin -> usr/bin/starry-test-suit (tests were silently skipped by qemu toml wildcard) 2. Fix KmodSectionMem null-pointer Drop UB: - Add null check in Drop before calling dealloc - Replace null-ptr KmodSectionMem fallback with safe NullSectionMem (no-op SectionMemOps implementation) to avoid UB entirely 3. Add comment explaining core::mem::forget(owner) intent: module must remain in memory; future delete_module will recover owner via global registry Verified: clippy 11 features, x86_64/riscv64/aarch64/loongarch64 build. --- os/StarryOS/kernel/src/kmod_loader.rs | 32 +++++++++++++------ .../syscall/test-kmod-loader/c/CMakeLists.txt | 2 +- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/os/StarryOS/kernel/src/kmod_loader.rs b/os/StarryOS/kernel/src/kmod_loader.rs index b1a1c0d391..f0e1389c06 100644 --- a/os/StarryOS/kernel/src/kmod_loader.rs +++ b/os/StarryOS/kernel/src/kmod_loader.rs @@ -6,14 +6,12 @@ use alloc::{ use ax_memory_addr::{PAGE_SIZE_4K, VirtAddr}; use kmod_loader::{KernelModuleHelper, SectionMemOps, SectionPerm}; -#[allow(dead_code)] struct KmodSectionMem { ptr: *mut u8, size: usize, layout: Layout, } -#[allow(dead_code)] impl KmodSectionMem { fn new(size: usize) -> Option { let aligned_size = (size + PAGE_SIZE_4K - 1) & !(PAGE_SIZE_4K - 1); @@ -77,11 +75,28 @@ unsafe impl Sync for KmodSectionMem {} impl Drop for KmodSectionMem { fn drop(&mut self) { - unsafe { dealloc(self.ptr, self.layout) }; + if !self.ptr.is_null() { + unsafe { dealloc(self.ptr, self.layout) }; + } + } +} + +struct NullSectionMem; + +impl SectionMemOps for NullSectionMem { + fn as_ptr(&self) -> *const u8 { + core::ptr::null() + } + + fn as_mut_ptr(&mut self) -> *mut u8 { + core::ptr::null_mut() + } + + fn change_perms(&mut self, _perms: SectionPerm) -> bool { + false } } -#[allow(dead_code)] pub struct StarryKmodHelper; impl KernelModuleHelper for StarryKmodHelper { @@ -90,11 +105,7 @@ impl KernelModuleHelper for StarryKmodHelper { Some(mem) => Box::new(mem), None => { warn!("kmod: vmalloc failed for size {size}"); - Box::new(KmodSectionMem { - ptr: core::ptr::null_mut(), - size: 0, - layout: Layout::from_size_align(1, 1).unwrap(), - }) + Box::new(NullSectionMem) } } } @@ -152,6 +163,9 @@ pub fn sys_init_module( ax_errno::AxError::Io })?; info!("kmod: module loaded and initialized successfully"); + // Intentionally leak the module owner: the loaded module must remain in + // memory for the kernel's lifetime. When `delete_module` is implemented + // the owner can be recovered (e.g. via a global registry) and dropped. core::mem::forget(owner); Ok(0) } diff --git a/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt index 97bccdbf3a..d1fafcd92c 100644 --- a/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt +++ b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/CMakeLists.txt @@ -5,4 +5,4 @@ set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) add_executable(test-kmod-loader src/main.c) target_compile_options(test-kmod-loader PRIVATE -Wall -Wextra -Werror) -install(TARGETS test-kmod-loader RUNTIME DESTINATION usr/bin) +install(TARGETS test-kmod-loader RUNTIME DESTINATION usr/bin/starry-test-suit) From 2834474b5165abd583d84ca04470a4bdc0a0ae56 Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Fri, 22 May 2026 20:04:13 +0800 Subject: [PATCH 3/8] docs(starry-kernel): add module-level documentation for kmod_loader Add module doc comments describing LKM support, key components (KmodSectionMem, NullSectionMem, StarryKmodHelper), and known limitations. Fix module ordering in lib.rs for rustfmt. --- os/StarryOS/kernel/src/kmod_loader.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/os/StarryOS/kernel/src/kmod_loader.rs b/os/StarryOS/kernel/src/kmod_loader.rs index f0e1389c06..518db412f1 100644 --- a/os/StarryOS/kernel/src/kmod_loader.rs +++ b/os/StarryOS/kernel/src/kmod_loader.rs @@ -1,3 +1,25 @@ +//! Loadable Kernel Module (LKM) support for StarryOS. +//! +//! Integrates the [`kmod_loader`] crate to provide `init_module` / +//! `delete_module` / `finit_module` system calls for loading .ko ELF +//! kernel modules at runtime. +//! +//! # Key Components +//! +//! - **KmodSectionMem**: Page-aligned memory with R/W/X permission control +//! via page table manipulation. Includes null-safe Drop. +//! - **NullSectionMem**: No-op fallback when vmalloc fails. +//! - **StarryKmodHelper**: Implements `KernelModuleHelper` trait with +//! vmalloc, resolve_symbol (stub), and cache flushing. +//! +//! # Known Limitations +//! +//! - `resolve_symbol` is a stub returning `None`; full implementation +//! requires PR #837 (kallsyms) to be merged. +//! - `delete_module` and `finit_module` are syscall stubs. +//! - Loaded modules are kept alive via `mem::forget`; future `delete_module` +//! will need a global registry to recover and free resources. + use alloc::{ alloc::{Layout, alloc, dealloc}, boxed::Box, From 6df5c321414ef962746e545a37d3a586404d27d9 Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Fri, 22 May 2026 20:52:49 +0800 Subject: [PATCH 4/8] fix(starry-kernel): address kmod review non-blocking suggestions - resolve_symbol stub: use AtomicBool to warn only once, avoid log spam - add test cases for valid ET_REL header, fd=0, and large junk input --- os/StarryOS/kernel/src/kmod_loader.rs | 15 +++++++++++++- .../syscall/test-kmod-loader/c/src/main.c | 20 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/os/StarryOS/kernel/src/kmod_loader.rs b/os/StarryOS/kernel/src/kmod_loader.rs index 518db412f1..6fe6febc48 100644 --- a/os/StarryOS/kernel/src/kmod_loader.rs +++ b/os/StarryOS/kernel/src/kmod_loader.rs @@ -28,6 +28,9 @@ use alloc::{ use ax_memory_addr::{PAGE_SIZE_4K, VirtAddr}; use kmod_loader::{KernelModuleHelper, SectionMemOps, SectionPerm}; +static RESOLVE_SYMBOL_WARNED: core::sync::atomic::AtomicBool = + core::sync::atomic::AtomicBool::new(false); + struct KmodSectionMem { ptr: *mut u8, size: usize, @@ -133,7 +136,17 @@ impl KernelModuleHelper for StarryKmodHelper { } fn resolve_symbol(_name: &str) -> Option { - warn!("kmod: resolve_symbol not yet available (depends on PR #837 kallsyms)"); + if RESOLVE_SYMBOL_WARNED + .compare_exchange( + false, + true, + core::sync::atomic::Ordering::Relaxed, + core::sync::atomic::Ordering::Relaxed, + ) + .is_ok() + { + warn!("kmod: resolve_symbol not yet available (depends on PR #837 kallsyms)"); + } None } diff --git a/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c index a5220417a9..74c3d38a84 100644 --- a/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c +++ b/test-suit/starryos/normal/qemu-smp1/syscall/test-kmod-loader/c/src/main.c @@ -82,5 +82,25 @@ int main(void) { CHECK(raw_init_module(buf, sizeof(buf), "key=val") < 0, "init_module(invalid ELF with args) returns error, no crash"); + MODULE_START("init_module_valid_et_rel_header"); + uint8_t et_rel[64] = { + 0x7f,'E','L','F', 2,1,1,0, 0,0,0,0,0,0,0,0, + 1,0, 0x3e,0, 1,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0, 64,0, 0,0, 0,0, 64,0, 0,0, 0,0 + }; + CHECK(raw_init_module(et_rel, sizeof(et_rel), "") < 0, + "init_module(valid ET_REL header, no sections) returns error"); + + MODULE_START("finit_module_fd_zero"); + CHECK(raw_finit_module(0, "", 0) < 0, + "finit_module(fd=0 stdin) returns error"); + + MODULE_START("init_module_large_junk"); + uint8_t big[256]; memset(big, 0xAA, sizeof(big)); + CHECK(raw_init_module(big, sizeof(big), "") < 0, + "init_module(256-byte junk) returns error, no crash"); + SUMMARY(); } From bae0f065cd2e275e5b63f33a9babf8554edc84e2 Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Sat, 23 May 2026 07:27:04 +0800 Subject: [PATCH 5/8] fix(starry-kernel): use literal 0x80 for BPF_CALL opcode in verifier BPF_CALL_OP constant does not exist in bpf_insn module. BPF_CALL opcode is 0x85, so the high nibble is 0x80. --- os/StarryOS/kernel/src/ebpf.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/os/StarryOS/kernel/src/ebpf.rs b/os/StarryOS/kernel/src/ebpf.rs index 99b3a1e0d9..b47243b3a4 100644 --- a/os/StarryOS/kernel/src/ebpf.rs +++ b/os/StarryOS/kernel/src/ebpf.rs @@ -1131,7 +1131,7 @@ impl BpfVm { let class = insn.class(); if class == bpf_insn::BPF_JMP || class == bpf_insn::BPF_JMP32 { let op = insn.code & 0xf0; - if op != bpf_insn::BPF_EXIT && op != bpf_insn::BPF_CALL_OP { + if op != bpf_insn::BPF_EXIT && op != 0x80 { let target = pc as isize + 1 + insn.off as isize; if target < 0 || target as usize >= insns.len() { warn!("bpf verifier: jump out of bounds at pc={pc} target={target}"); From fc89771758b46bbb54c04078ef5216a9b844c357 Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Wed, 27 May 2026 12:11:13 +0800 Subject: [PATCH 6/8] fix(starry-kernel): rebase onto dev with kprobe+eBPF merged, resolve conflicts - Skip kprobe and eBPF commits (already in dev via #847 + #848) - Resolve lib.rs, syscall/mod.rs, Cargo.toml conflicts - Update ax_hal -> ax_runtime::hal paths in kmod_loader.rs - Remove dw_apb_uart (not in workspace dependencies) --- Cargo.lock | 893 ++++++++++++++++---------- os/StarryOS/kernel/Cargo.toml | 1 - os/StarryOS/kernel/src/kmod_loader.rs | 16 +- os/StarryOS/kernel/src/lib.rs | 2 +- 4 files changed, 570 insertions(+), 342 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3e8679390d..a3b959805f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -63,15 +63,31 @@ dependencies = [ "spinning_top 0.3.0", ] +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "cpp_demangle 0.4.5", + "fallible-iterator", + "gimli 0.32.3", + "memmap2", + "object 0.37.3", + "rustc-demangle", + "smallvec", + "typed-arena", +] + [[package]] name = "addr2line" version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59317f77929f0e679d39364702289274de2f0f0b22cbf50b2b8cff2169a0b27a" dependencies = [ - "cpp_demangle", + "cpp_demangle 0.5.1", "fallible-iterator", - "gimli", + "gimli 0.33.0", "memmap2", "object 0.39.1", "rustc-demangle", @@ -227,6 +243,8 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" name = "arceos-affinity" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -234,6 +252,8 @@ dependencies = [ name = "arceos-backtrace" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "axbacktrace", ] @@ -242,6 +262,8 @@ dependencies = [ name = "arceos-backtrace-raw-badfp" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "axbacktrace", ] @@ -250,6 +272,8 @@ dependencies = [ name = "arceos-backtrace-raw-basic" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "axbacktrace", ] @@ -258,6 +282,8 @@ dependencies = [ name = "arceos-backtrace-raw-normal" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "axbacktrace", ] @@ -266,6 +292,8 @@ dependencies = [ name = "arceos-display" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "embedded-graphics", ] @@ -274,6 +302,8 @@ dependencies = [ name = "arceos-exception" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -282,8 +312,10 @@ name = "arceos-fs-shell" version = "0.3.1" dependencies = [ "ax-crate-interface", + "ax-driver", "ax-fs-ramfs", "ax-fs-vfs", + "ax-hal", "ax-std", ] @@ -291,6 +323,8 @@ dependencies = [ name = "arceos-ipi" version = "0.3.0" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -298,6 +332,8 @@ dependencies = [ name = "arceos-irq" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -305,14 +341,19 @@ dependencies = [ name = "arceos-lockdep" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-kspin", "ax-std", + "axfs-ng-vfs", ] [[package]] name = "arceos-memtest" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "rand 0.8.6", ] @@ -321,6 +362,8 @@ dependencies = [ name = "arceos-net-echoserver" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -328,6 +371,8 @@ dependencies = [ name = "arceos-net-httpclient" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-io", "ax-std", ] @@ -336,6 +381,8 @@ dependencies = [ name = "arceos-net-httpserver" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -343,6 +390,8 @@ dependencies = [ name = "arceos-net-udpserver" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -350,6 +399,8 @@ dependencies = [ name = "arceos-parallel" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", "rand 0.8.6", ] @@ -358,6 +409,8 @@ dependencies = [ name = "arceos-priority" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -367,11 +420,13 @@ version = "0.1.1" [[package]] name = "arceos-rust-interface" -version = "1.0.2" +version = "1.0.3" dependencies = [ "ax-api", + "ax-driver", "ax-errno", "ax-feat", + "ax-hal", "ax-io", "ax-kspin", "ax-posix-api", @@ -384,6 +439,16 @@ dependencies = [ name = "arceos-sleep" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", + "ax-std", +] + +[[package]] +name = "arceos-stack-guard-page" +version = "0.3.1" +dependencies = [ + "ax-hal", "ax-std", ] @@ -446,6 +511,8 @@ dependencies = [ name = "arceos-tls" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -453,6 +520,17 @@ dependencies = [ name = "arceos-wait-queue" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", + "ax-std", +] + +[[package]] +name = "arceos-wait-queue-remote-wake" +version = "0.3.1" +dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -460,6 +538,8 @@ dependencies = [ name = "arceos-yield" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -487,14 +567,14 @@ dependencies = [ "nb", "num-align", "smccc", - "spin 0.10.0", + "spin", "thiserror 2.0.18", "tock-registers 0.10.1", ] [[package]] name = "arm_vcpu" -version = "0.5.8" +version = "0.5.9" dependencies = [ "aarch64-cpu 11.2.0", "ax-errno", @@ -505,23 +585,24 @@ dependencies = [ "axvisor_api", "log", "numeric-enum-macro", - "spin 0.10.0", + "spin", ] [[package]] name = "arm_vgic" -version = "0.4.9" +version = "0.4.10" dependencies = [ "aarch64-cpu 11.2.0", "aarch64_sysreg", "ax-errno", + "ax-kspin", "ax-memory-addr", "axaddrspace", "axdevice_base", "axvisor_api", "bitmaps", "log", - "spin 0.10.0", + "spin", "tock-registers 0.10.1", ] @@ -611,7 +692,7 @@ dependencies = [ [[package]] name = "ax-alloc" -version = "0.7.1" +version = "0.7.2" dependencies = [ "ax-allocator", "ax-errno", @@ -628,7 +709,7 @@ dependencies = [ [[package]] name = "ax-allocator" -version = "0.5.1" +version = "0.5.2" dependencies = [ "ax-errno", "ax_slab_allocator", @@ -642,13 +723,12 @@ dependencies = [ [[package]] name = "ax-api" -version = "0.5.15" +version = "0.5.16" dependencies = [ "ax-alloc", "ax-config", "ax-display", "ax-dma", - "ax-driver", "ax-errno", "ax-feat", "ax-fs", @@ -663,13 +743,6 @@ dependencies = [ "ax-task", ] -[[package]] -name = "ax-arm-pl011" -version = "0.3.8" -dependencies = [ - "tock-registers 0.8.1", -] - [[package]] name = "ax-arm-pl031" version = "0.4.7" @@ -712,7 +785,7 @@ dependencies = [ [[package]] name = "ax-cpu" -version = "0.6.3" +version = "0.6.4" dependencies = [ "aarch64-cpu 11.2.0", "ax-lazyinit", @@ -768,17 +841,17 @@ dependencies = [ [[package]] name = "ax-display" -version = "0.5.13" +version = "0.5.14" dependencies = [ - "ax-driver", "ax-lazyinit", "ax-sync", "log", + "rdif-display", ] [[package]] name = "ax-dma" -version = "0.5.14" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-allocator", @@ -792,104 +865,57 @@ dependencies = [ [[package]] name = "ax-driver" -version = "0.5.15" +version = "0.6.0" dependencies = [ + "anyhow", + "arm-scmi-rs", "ax-alloc", - "ax-config", + "ax-arm-pl031", "ax-crate-interface", - "ax-dma", - "ax-driver-base", - "ax-driver-block", - "ax-driver-display", - "ax-driver-input", - "ax-driver-net", - "ax-driver-pci", - "ax-driver-virtio", - "ax-driver-vsock", "ax-errno", - "ax-hal", - "axplat-dyn", - "cfg-if", - "log", - "smallvec", -] - -[[package]] -name = "ax-driver-base" -version = "0.3.12" - -[[package]] -name = "ax-driver-block" -version = "0.3.13" -dependencies = [ - "ax-driver-base", + "ax-kernel-guard", + "ax-kspin", + "axklib", "bcm2835-sdhci", - "gpt_disk_io", - "log", - "sg200x-bsp", - "simple-ahci", - "simple-sdmmc", -] - -[[package]] -name = "ax-driver-display" -version = "0.3.12" -dependencies = [ - "ax-driver-base", -] - -[[package]] -name = "ax-driver-input" -version = "0.3.13" -dependencies = [ - "ax-driver-base", - "strum 0.27.2", -] - -[[package]] -name = "ax-driver-net" -version = "0.3.13" -dependencies = [ - "ax-driver-base", - "bitflags 2.11.1", + "crab-usb", + "dma-api", + "dwmmc-host", + "eth-intel", + "fdt-edit", "fxmac_rs", + "heapless 0.9.3", "ixgbe-driver", "log", - "spin 0.9.8", -] - -[[package]] -name = "ax-driver-pci" -version = "0.3.12" -dependencies = [ - "virtio-drivers", -] - -[[package]] -name = "ax-driver-virtio" -version = "0.4.0" -dependencies = [ - "ax-driver-base", - "ax-driver-block", - "ax-driver-display", - "ax-driver-input", - "ax-driver-net", - "ax-driver-vsock", - "log", + "mmio-api", + "pcie", + "phytium-mci-host", + "ramdisk", + "rd-block", + "rd-net", + "rdif-clk", + "rdif-display", + "rdif-input", + "rdif-intc", + "rdif-pcie", + "rdif-vsock", + "rdrive", + "rdrive-macros", + "realtek-rtl8125", + "rk3588-pci", + "rockchip-npu", + "rockchip-pm", + "rockchip-soc", + "sdhci-host", + "sdmmc-protocol", + "simple-ahci", + "some-serial", + "spin", "virtio-drivers", ] -[[package]] -name = "ax-driver-vsock" -version = "0.3.12" -dependencies = [ - "ax-driver-base", - "log", -] - [[package]] name = "ax-errno" -version = "0.5.0" +version = "0.6.0" dependencies = [ "log", "strum 0.27.2", @@ -897,7 +923,7 @@ dependencies = [ [[package]] name = "ax-feat" -version = "0.5.15" +version = "0.5.16" dependencies = [ "ax-alloc", "ax-config", @@ -911,6 +937,7 @@ dependencies = [ "ax-kspin", "ax-log", "ax-net", + "ax-net-ng", "ax-runtime", "ax-sync", "ax-task", @@ -919,38 +946,37 @@ dependencies = [ [[package]] name = "ax-fs" -version = "0.5.13" +version = "0.5.14" dependencies = [ "ax-cap-access", - "ax-driver", "ax-errno", "ax-fs-devfs", "ax-fs-ramfs", "ax-fs-vfs", "ax-hal", "ax-io", + "ax-kspin", "ax-lazyinit", "axfatfs", "log", "rsext4", - "spin 0.10.0", + "spin", ] [[package]] name = "ax-fs-devfs" -version = "0.3.10" +version = "0.3.11" dependencies = [ "ax-fs-vfs", "log", - "spin 0.9.8", + "spin", ] [[package]] name = "ax-fs-ng" -version = "0.5.14" +version = "0.5.15" dependencies = [ "ax-alloc", - "ax-driver", "ax-errno", "ax-hal", "ax-io", @@ -963,27 +989,28 @@ dependencies = [ "chrono", "intrusive-collections", "log", - "lru", + "lru 0.16.4", "lwext4_rust", + "rd-block-volume", "rsext4", "scope-local", "slab", - "spin 0.10.0", + "spin", "starry-fatfs", ] [[package]] name = "ax-fs-ramfs" -version = "0.3.11" +version = "0.3.12" dependencies = [ "ax-fs-vfs", "log", - "spin 0.9.8", + "spin", ] [[package]] name = "ax-fs-vfs" -version = "0.3.10" +version = "0.3.11" dependencies = [ "ax-errno", "bitflags 2.11.1", @@ -992,7 +1019,7 @@ dependencies = [ [[package]] name = "ax-hal" -version = "0.5.14" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-config", @@ -1002,16 +1029,23 @@ dependencies = [ "ax-page-table-multiarch", "ax-percpu", "ax-plat", + "ax-plat-aarch64-bsta1000b", + "ax-plat-aarch64-phytium-pi", "ax-plat-aarch64-qemu-virt", + "ax-plat-aarch64-raspi", "ax-plat-loongarch64-qemu-virt", "ax-plat-riscv64-qemu-virt", + "ax-plat-riscv64-sg2002", "ax-plat-x86-pc", "axplat-dyn", + "axplat-riscv64-visionfive2", + "axplat-x86-qemu-q35", "cfg-if", "fdt-parser", "heapless 0.9.3", "log", - "spin 0.10.0", + "rdrive", + "spin", "toml 1.1.2+spec-1.1.0", ] @@ -1023,6 +1057,8 @@ version = "0.3.7" name = "ax-helloworld" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -1030,6 +1066,8 @@ dependencies = [ name = "ax-helloworld-myplat" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-plat-aarch64-bsta1000b", "ax-plat-aarch64-phytium-pi", "ax-plat-aarch64-qemu-virt", @@ -1045,6 +1083,8 @@ dependencies = [ name = "ax-httpclient" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] @@ -1052,17 +1092,19 @@ dependencies = [ name = "ax-httpserver" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] [[package]] name = "ax-input" -version = "0.5.13" +version = "0.5.14" dependencies = [ - "ax-driver", "ax-lazyinit", "ax-sync", "log", + "rdif-input", ] [[package]] @@ -1071,7 +1113,7 @@ version = "0.3.7" [[package]] name = "ax-io" -version = "0.5.6" +version = "0.5.7" dependencies = [ "ax-errno", "heapless 0.9.3", @@ -1080,7 +1122,7 @@ dependencies = [ [[package]] name = "ax-ipi" -version = "0.5.13" +version = "0.5.14" dependencies = [ "ax-config", "ax-hal", @@ -1113,10 +1155,12 @@ version = "0.4.7" [[package]] name = "ax-libc" -version = "0.5.14" +version = "0.5.15" dependencies = [ + "ax-driver", "ax-errno", "ax-feat", + "ax-hal", "ax-io", "ax-posix-api", "bindgen 0.72.1", @@ -1152,7 +1196,7 @@ version = "0.6.8" [[package]] name = "ax-memory-set" -version = "0.6.8" +version = "0.6.9" dependencies = [ "ax-errno", "ax-memory-addr", @@ -1160,7 +1204,7 @@ dependencies = [ [[package]] name = "ax-mm" -version = "0.5.14" +version = "0.5.15" dependencies = [ "ax-alloc", "ax-errno", @@ -1175,33 +1219,33 @@ dependencies = [ [[package]] name = "ax-net" -version = "0.5.13" +version = "0.5.14" dependencies = [ - "ax-driver", "ax-errno", "ax-hal", "ax-io", "ax-lazyinit", + "ax-net-ng", "ax-sync", "ax-task", "cfg-if", "log", "smoltcp 0.13.1", - "spin 0.10.0", + "spin", ] [[package]] name = "ax-net-ng" -version = "0.6.0" +version = "0.6.1" dependencies = [ "async-channel", "async-trait", "ax-config", - "ax-driver", "ax-errno", "ax-fs-ng", "ax-hal", "ax-io", + "ax-kspin", "ax-sync", "ax-task", "axfs-ng-vfs", @@ -1211,11 +1255,12 @@ dependencies = [ "enum_dispatch", "event-listener", "hashbrown 0.16.1", - "lazy_static", "log", + "rd-net", + "rdif-vsock", "ringbuf", "smoltcp 0.13.1", - "spin 0.10.0", + "spin", ] [[package]] @@ -1230,7 +1275,7 @@ dependencies = [ [[package]] name = "ax-page-table-multiarch" -version = "0.8.9" +version = "0.8.10" dependencies = [ "arrayvec", "ax-errno", @@ -1250,7 +1295,7 @@ dependencies = [ "ax-kernel-guard", "ax-percpu-macros", "cfg-if", - "spin 0.10.0", + "spin", "x86", ] @@ -1276,11 +1321,12 @@ dependencies = [ "ax-plat-macros", "bitflags 2.11.1", "const-str", + "rdrive", ] [[package]] name = "ax-plat-aarch64-bsta1000b" -version = "0.5.10" +version = "0.5.11" dependencies = [ "ax-config-macros", "ax-cpu", @@ -1288,17 +1334,16 @@ dependencies = [ "ax-page-table-entry", "ax-plat", "ax-plat-aarch64-peripherals", - "dw_apb_uart", "log", + "some-serial", ] [[package]] name = "ax-plat-aarch64-peripherals" -version = "0.5.9" +version = "0.5.10" dependencies = [ "aarch64-cpu 11.2.0", "arm-gic-driver", - "ax-arm-pl011", "ax-arm-pl031", "ax-cpu", "ax-int-ratio", @@ -1306,12 +1351,13 @@ dependencies = [ "ax-lazyinit", "ax-plat", "log", - "spin 0.10.0", + "some-serial", + "spin", ] [[package]] name = "ax-plat-aarch64-phytium-pi" -version = "0.5.10" +version = "0.5.11" dependencies = [ "ax-config-macros", "ax-cpu", @@ -1323,19 +1369,22 @@ dependencies = [ [[package]] name = "ax-plat-aarch64-qemu-virt" -version = "0.5.9" +version = "0.5.10" dependencies = [ "ax-config-macros", "ax-cpu", + "ax-driver", "ax-page-table-entry", "ax-plat", "ax-plat-aarch64-peripherals", + "axklib", "log", + "mmio-api", ] [[package]] name = "ax-plat-aarch64-raspi" -version = "0.5.10" +version = "0.5.11" dependencies = [ "aarch64-cpu 11.2.0", "ax-config-macros", @@ -1348,17 +1397,20 @@ dependencies = [ [[package]] name = "ax-plat-loongarch64-qemu-virt" -version = "0.5.9" +version = "0.5.10" dependencies = [ "ax-config-macros", "ax-cpu", + "ax-driver", "ax-kspin", "ax-lazyinit", "ax-page-table-entry", "ax-plat", + "axklib", "chrono", "log", "loongArch64", + "mmio-api", "uart_16550 0.5.0", ] @@ -1374,15 +1426,18 @@ dependencies = [ [[package]] name = "ax-plat-riscv64-qemu-virt" -version = "0.5.8" +version = "0.5.9" dependencies = [ "ax-config-macros", "ax-cpu", + "ax-driver", "ax-kspin", "ax-lazyinit", "ax-plat", "ax-riscv-plic", + "axklib", "log", + "mmio-api", "riscv 0.16.0", "riscv_goldfish", "sbi-rt 0.0.3", @@ -1391,31 +1446,38 @@ dependencies = [ [[package]] name = "ax-plat-riscv64-sg2002" -version = "0.3.5" +version = "0.3.6" dependencies = [ "ax-config-macros", "ax-cpu", + "ax-driver", "ax-kspin", "ax-lazyinit", "ax-plat", "ax-riscv-plic", - "dw_uart_rs", + "axklib", "log", + "rd-block", "riscv 0.16.0", "sbi-rt 0.0.3", + "sg200x-bsp", + "some-serial", + "spin", ] [[package]] name = "ax-plat-x86-pc" -version = "0.5.9" +version = "0.5.10" dependencies = [ "ax-config-macros", "ax-cpu", + "ax-driver", "ax-int-ratio", "ax-kspin", "ax-lazyinit", "ax-percpu", "ax-plat", + "axklib", "bitflags 2.11.1", "heapless 0.9.3", "log", @@ -1430,7 +1492,7 @@ dependencies = [ [[package]] name = "ax-posix-api" -version = "0.5.15" +version = "0.5.16" dependencies = [ "ax-alloc", "ax-config", @@ -1446,9 +1508,8 @@ dependencies = [ "ax-task", "bindgen 0.72.1", "flatten_objects", - "lazy_static", "scope-local", - "spin 0.10.0", + "spin", ] [[package]] @@ -1460,7 +1521,7 @@ dependencies = [ [[package]] name = "ax-runtime" -version = "0.5.15" +version = "0.5.16" dependencies = [ "ax-alloc", "ax-config", @@ -1468,6 +1529,7 @@ dependencies = [ "ax-ctor-bare", "ax-display", "ax-driver", + "ax-errno", "ax-fs", "ax-fs-ng", "ax-hal", @@ -1488,6 +1550,10 @@ dependencies = [ "cfg-if", "chrono", "indoc", + "rd-block", + "rd-net", + "rdrive", + "spin", ] [[package]] @@ -1501,12 +1567,14 @@ dependencies = [ name = "ax-shell" version = "0.3.1" dependencies = [ + "ax-driver", + "ax-hal", "ax-std", ] [[package]] name = "ax-std" -version = "0.5.14" +version = "0.5.15" dependencies = [ "ax-api", "ax-errno", @@ -1515,12 +1583,12 @@ dependencies = [ "ax-kspin", "ax-lazyinit", "lock_api", - "spin 0.10.0", + "spin", ] [[package]] name = "ax-sync" -version = "0.5.14" +version = "0.5.15" dependencies = [ "ax-kspin", "ax-lockdep", @@ -1531,18 +1599,21 @@ dependencies = [ [[package]] name = "ax-task" -version = "0.5.15" +version = "0.5.16" dependencies = [ + "ax-alloc", "ax-config", "ax-cpumask", "ax-crate-interface", "ax-errno", "ax-hal", + "ax-ipi", "ax-kernel-guard", "ax-kspin", "ax-lazyinit", "ax-lockdep", "ax-memory-addr", + "ax-mm", "ax-percpu", "ax-sched", "ax-timer-list", @@ -1551,7 +1622,7 @@ dependencies = [ "extern-trait", "futures-util", "log", - "spin 0.10.0", + "spin", ] [[package]] @@ -1569,10 +1640,11 @@ dependencies = [ [[package]] name = "axaddrspace" -version = "0.5.10" +version = "0.5.11" dependencies = [ "assert_matches", "ax-errno", + "ax-kspin", "ax-lazyinit", "ax-memory-addr", "ax-memory-set", @@ -1585,28 +1657,27 @@ dependencies = [ "lazy_static", "log", "numeric-enum-macro", - "spin 0.10.0", "x86", ] [[package]] name = "axbacktrace" -version = "0.3.9" +version = "0.4.0" dependencies = [ - "addr2line", + "addr2line 0.26.1", "axpanic", "cfg-if", - "gimli", + "gimli 0.33.0", "log", "paste", - "spin 0.10.0", + "spin", ] [[package]] name = "axbuild" -version = "0.4.7" +version = "0.4.8" dependencies = [ - "addr2line", + "addr2line 0.26.1", "anyhow", "ax-config-gen", "axvmconfig", @@ -1648,10 +1719,11 @@ dependencies = [ [[package]] name = "axdevice" -version = "0.4.9" +version = "0.4.10" dependencies = [ "arm_vgic", "ax-errno", + "ax-kspin", "ax-memory-addr", "axaddrspace", "axdevice_base", @@ -1660,12 +1732,11 @@ dependencies = [ "log", "range-alloc-arceos", "riscv_vplic", - "spin 0.10.0", ] [[package]] name = "axdevice_base" -version = "0.4.10" +version = "0.4.11" dependencies = [ "ax-errno", "axaddrspace", @@ -1695,9 +1766,10 @@ dependencies = [ [[package]] name = "axfs-ng-vfs" -version = "0.4.1" +version = "0.4.2" dependencies = [ "ax-errno", + "ax-kspin", "axpoll", "bitflags 2.11.1", "cfg-if", @@ -1705,12 +1777,11 @@ dependencies = [ "inherit-methods-macro", "log", "smallvec", - "spin 0.10.0", ] [[package]] name = "axhvc" -version = "0.4.7" +version = "0.4.8" dependencies = [ "ax-errno", ] @@ -1729,10 +1800,12 @@ dependencies = [ [[package]] name = "axklib" -version = "0.5.8" +version = "0.5.9" dependencies = [ "ax-errno", "ax-memory-addr", + "dma-api", + "mmio-api", "trait-ffi", ] @@ -1742,54 +1815,27 @@ version = "0.1.0" [[package]] name = "axplat-dyn" -version = "0.6.1" +version = "0.6.2" dependencies = [ "anyhow", - "arm-scmi-rs", - "ax-alloc", - "ax-arm-pl031", "ax-config-macros", "ax-cpu", - "ax-driver-base", - "ax-driver-block", - "ax-driver-net", - "ax-driver-virtio", + "ax-driver", "ax-errno", - "ax-kspin", "ax-memory-addr", "ax-percpu", "ax-plat", "axklib", - "crab-usb", - "dma-api", - "dwmmc-host", - "eth-intel", - "fdt-edit", "heapless 0.9.3", "log", - "mmio-api", - "pcie", - "phytium-mci-host", - "rd-block", - "rd-net", - "rdif-clk", - "rdif-pcie", "rdrive", - "realtek-rtl8125", - "rk3588-pci", - "rockchip-npu", - "rockchip-pm", - "rockchip-soc", - "sdhci-host", - "sdmmc-protocol", - "some-serial", "somehal", - "spin 0.10.0", + "spin", ] [[package]] name = "axplat-riscv64-visionfive2" -version = "0.1.3" +version = "0.1.4" dependencies = [ "ax-config-macros", "ax-cpu", @@ -1798,6 +1844,7 @@ dependencies = [ "ax-plat", "ax-riscv-plic", "log", + "rdrive", "riscv 0.14.0", "riscv_goldfish", "sbi-rt 0.0.3", @@ -1806,15 +1853,17 @@ dependencies = [ [[package]] name = "axplat-x86-qemu-q35" -version = "0.4.7" +version = "0.4.8" dependencies = [ "ax-config-macros", "ax-cpu", + "ax-driver", "ax-int-ratio", "ax-kspin", "ax-lazyinit", "ax-percpu", "ax-plat", + "axklib", "bitflags 2.11.1", "heapless 0.9.3", "log", @@ -1835,7 +1884,7 @@ dependencies = [ "bitflags 2.11.1", "futures", "linux-raw-sys 0.12.1", - "spin 0.10.0", + "spin", "tokio", ] @@ -1893,7 +1942,7 @@ dependencies = [ [[package]] name = "axvcpu" -version = "0.5.8" +version = "0.5.9" dependencies = [ "ax-errno", "ax-memory-addr", @@ -1904,7 +1953,7 @@ dependencies = [ [[package]] name = "axvisor" -version = "0.5.7" +version = "0.5.8" dependencies = [ "aarch64-cpu-ext", "anyhow", @@ -1912,6 +1961,7 @@ dependencies = [ "ax-config", "ax-cpumask", "ax-crate-interface", + "ax-driver", "ax-errno", "ax-hal", "ax-kernel-guard", @@ -1943,15 +1993,15 @@ dependencies = [ "extern-trait", "fdt-parser", "hashbrown 0.14.5", - "lazy_static", "log", "prettyplease", + "proc-macro2", "quote", "rdif-intc", "rdrive", "riscv_vcpu", "riscv_vplic", - "spin 0.10.0", + "spin", "syn 2.0.117", "tokio", "toml 0.9.12+spec-1.1.0", @@ -1959,7 +2009,7 @@ dependencies = [ [[package]] name = "axvisor_api" -version = "0.5.10" +version = "0.5.11" dependencies = [ "ax-cpumask", "ax-crate-interface", @@ -1980,12 +2030,13 @@ dependencies = [ [[package]] name = "axvm" -version = "0.5.8" +version = "0.5.9" dependencies = [ "arm_vcpu", "arm_vgic", "ax-cpumask", "ax-errno", + "ax-kspin", "ax-memory-addr", "ax-page-table-entry", "ax-page-table-multiarch", @@ -2000,13 +2051,13 @@ dependencies = [ "log", "loongarch_vcpu", "riscv_vcpu", - "spin 0.10.0", + "spin", "x86_vcpu", ] [[package]] name = "axvmconfig" -version = "0.5.1" +version = "0.5.2" dependencies = [ "ax-errno", "clap", @@ -2055,6 +2106,26 @@ dependencies = [ "volatile 0.3.0", ] +[[package]] +name = "bincode" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" +dependencies = [ + "bincode_derive", + "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", +] + [[package]] name = "bindgen" version = "0.70.1" @@ -2233,12 +2304,12 @@ dependencies = [ [[package]] name = "buddy-slab-allocator" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a844607dec426282e05649372acdc1170b08ba57879be9d3216184ed6dbfd3b" +version = "0.4.1" dependencies = [ + "divan", "log", - "spin 0.10.0", + "rand 0.10.1", + "spin", ] [[package]] @@ -2253,7 +2324,7 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b672b945a3e4f4f40bfd4cd5ee07df9e796a42254ce7cd6d2599ad969244c44a" dependencies = [ - "spin 0.10.0", + "spin", ] [[package]] @@ -2417,6 +2488,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chrono" version = "0.4.44" @@ -2489,6 +2571,7 @@ dependencies = [ "anstyle", "clap_lex", "strsim 0.11.1", + "terminal_size", ] [[package]] @@ -2596,6 +2679,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "condtype" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" + [[package]] name = "console" version = "0.16.3" @@ -2682,6 +2771,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f8f80099a98041a3d1622845c271458a2d73e688351bf3cb999266764b81d48" +[[package]] +name = "cpp_demangle" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" +dependencies = [ + "cfg-if", +] + [[package]] name = "cpp_demangle" version = "0.5.1" @@ -2726,7 +2824,7 @@ dependencies = [ "mbarrier", "nb", "num_enum", - "spin 0.10.0", + "spin", "thiserror 2.0.18", "tock-registers 0.10.1", "trait-ffi", @@ -3298,16 +3396,41 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "divan" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a405457ec78b8fe08b0e32b4a3570ab5dff6dd16eb9e76a5ee0a9d9cbd898933" +dependencies = [ + "cfg-if", + "clap", + "condtype", + "divan-macros", + "libc", + "regex-lite", +] + +[[package]] +name = "divan-macros" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9556bc800956545d6420a640173e5ba7dfa82f38d3ea5a167eb555bc69ac3323" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "dma-api" version = "0.7.3" dependencies = [ "aarch64-cpu-ext", + "ax-kspin", "cfg-if", "derive_more", "log", "mbarrier", - "spin 0.10.0", "thiserror 2.0.18", ] @@ -3362,22 +3485,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" -[[package]] -name = "dw_apb_uart" -version = "0.1.2" -dependencies = [ - "tock-registers 0.10.1", -] - -[[package]] -name = "dw_uart_rs" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3751978e2d9bced3cb480631bb2c14098357ae269ac95475720aee545c6dcd" -dependencies = [ - "tock-registers 0.8.1", -] - [[package]] name = "dwmmc-host" version = "0.1.1" @@ -4033,6 +4140,7 @@ dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", + "rand_core 0.10.1", "wasip2", "wasip3", ] @@ -4047,6 +4155,16 @@ dependencies = [ "weezl", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + [[package]] name = "gimli" version = "0.33.0" @@ -4073,28 +4191,6 @@ dependencies = [ "scroll", ] -[[package]] -name = "gpt_disk_io" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb194b955ba40423510e4342a077df49c70a599cf692cd0e30a86a32d8a9c7b1" -dependencies = [ - "bytemuck", - "gpt_disk_types", -] - -[[package]] -name = "gpt_disk_types" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3972298dc4cef533492b66bdd75747133618917f44885a11dc8abd24c4e3f1f0" -dependencies = [ - "bytemuck", - "crc", - "ucs2", - "uguid", -] - [[package]] name = "h2" version = "0.4.14" @@ -4178,6 +4274,11 @@ name = "hashbrown" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "heapless" @@ -4985,6 +5086,19 @@ dependencies = [ "log", ] +[[package]] +name = "ktracepoint" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30aa94490986294aa3a19dc3fbc6b7eefe3fbbac18c323c4153a0cfd1a7a0b74" +dependencies = [ + "log", + "lru 0.18.0", + "paste", + "static-keys", + "tp-lexer", +] + [[package]] name = "lab" version = "0.11.0" @@ -4996,9 +5110,6 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] [[package]] name = "leb128fmt" @@ -5160,14 +5271,18 @@ dependencies = [ [[package]] name = "loongarch_vcpu" -version = "0.5.2" +version = "0.5.3" dependencies = [ "ax-errno", + "ax-kspin", + "ax-memory-addr", + "ax-page-table-multiarch", "ax-percpu", "axaddrspace", "axvcpu", + "axvisor_api", "log", - "spin 0.10.0", + "loongArch64", ] [[package]] @@ -5179,6 +5294,15 @@ dependencies = [ "hashbrown 0.16.1", ] +[[package]] +name = "lru" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9" +dependencies = [ + "hashbrown 0.17.1", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -5605,10 +5729,21 @@ dependencies = [ "mmio-api", "pcie", "rd-block", - "spin 0.10.0", + "spin", "tock-registers 0.10.1", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "flate2", + "memchr", + "ruzstd", +] + [[package]] name = "object" version = "0.38.1" @@ -5666,9 +5801,9 @@ dependencies = [ [[package]] name = "ostool" -version = "0.15.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13501cb17f0511a3f470b7758dadee6f5740bc9a948f7391140866b50f0f9b5e" +checksum = "f785cb91e2622849c3f0e55d5363989934d365967c06f0a8ce8fd944f3b834ba" dependencies = [ "anyhow", "async-trait", @@ -6117,6 +6252,30 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "qemu-plugin" +version = "10.1.0-v2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19df903439a896a96aec394ca3e1b6e0fdbd92b8112aec484cd9a56c9453e806" +dependencies = [ + "anyhow", + "lazy_static", + "libc", + "libloading", + "qemu-plugin-sys", + "thiserror 2.0.18", + "windows", +] + +[[package]] +name = "qemu-plugin-sys" +version = "10.1.0-v2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626809b8b33148371d3e2754834b68e27ff0bf5a5b326a67d83fccd4e1699cab" +dependencies = [ + "anyhow", +] + [[package]] name = "qoi" version = "0.4.1" @@ -6126,6 +6285,27 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "qperf" +version = "0.1.0" +dependencies = [ + "anyhow", + "bincode", + "crossbeam-channel", + "qemu-plugin", + "zerocopy", +] + +[[package]] +name = "qperf-analyzer" +version = "0.1.0" +dependencies = [ + "addr2line 0.25.1", + "anyhow", + "bincode", + "clap", +] + [[package]] name = "quinn" version = "0.11.9" @@ -6216,7 +6396,7 @@ dependencies = [ "dma-api", "rd-block", "rdif-block", - "spin 0.10.0", + "spin", ] [[package]] @@ -6246,6 +6426,8 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ + "chacha20", + "getrandom 0.4.2", "rand_core 0.10.1", ] @@ -6331,7 +6513,7 @@ dependencies = [ "indoc", "itertools 0.14.0", "kasuari", - "lru", + "lru 0.16.4", "strum 0.27.2", "thiserror 2.0.18", "unicode-segmentation", @@ -6438,6 +6620,10 @@ dependencies = [ "spin_on", ] +[[package]] +name = "rd-block-volume" +version = "0.1.0" + [[package]] name = "rd-net" version = "0.1.1" @@ -6482,6 +6668,14 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "rdif-display" +version = "0.1.0" +dependencies = [ + "rdif-base", + "thiserror 2.0.18", +] + [[package]] name = "rdif-eth" version = "0.2.1" @@ -6491,6 +6685,14 @@ dependencies = [ "thiserror 2.0.18", ] +[[package]] +name = "rdif-input" +version = "0.1.0" +dependencies = [ + "rdif-base", + "thiserror 2.0.18", +] + [[package]] name = "rdif-intc" version = "0.14.1" @@ -6524,7 +6726,7 @@ dependencies = [ "futures", "heapless 0.9.3", "rdif-base", - "spin 0.10.0", + "spin", "thiserror 2.0.18", ] @@ -6542,6 +6744,14 @@ dependencies = [ "rdif-base", ] +[[package]] +name = "rdif-vsock" +version = "0.1.0" +dependencies = [ + "rdif-base", + "thiserror 2.0.18", +] + [[package]] name = "rdrive" version = "0.20.1" @@ -6557,7 +6767,7 @@ dependencies = [ "rdif-intc", "rdif-pcie", "rdrive-macros", - "spin 0.10.0", + "spin", "thiserror 2.0.18", ] @@ -6578,7 +6788,7 @@ dependencies = [ "log", "mmio-api", "rdif-eth", - "spin 0.10.0", + "spin", "thiserror 2.0.18", "tock-registers 0.10.1", ] @@ -6635,6 +6845,12 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-lite" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" + [[package]] name = "regex-syntax" version = "0.8.10" @@ -6811,7 +7027,7 @@ checksum = "07aac72f95e774476db82916d79f2d303191310393830573c1ab5c821b21660a" [[package]] name = "riscv_vcpu" -version = "0.5.8" +version = "0.5.9" dependencies = [ "ax-crate-interface", "ax-errno", @@ -6836,16 +7052,16 @@ dependencies = [ [[package]] name = "riscv_vplic" -version = "0.4.11" +version = "0.4.12" dependencies = [ "ax-errno", + "ax-kspin", "axaddrspace", "axdevice_base", "axvisor_api", "bitmaps", "log", "riscv-h", - "spin 0.10.0", ] [[package]] @@ -6902,19 +7118,16 @@ dependencies = [ [[package]] name = "rockchip-npu" -version = "0.2.0" +version = "0.2.1" dependencies = [ "aarch64-cpu-ext", "bitflags 2.11.1", "dma-api", - "fdt-edit", "log", "mbarrier", "num-align", "rdif-base", - "rockchip-pm", - "rockchip-soc", - "spin 0.10.0", + "spin", "thiserror 2.0.18", "tock-registers 0.10.1", ] @@ -6931,8 +7144,9 @@ dependencies = [ [[package]] name = "rockchip-soc" -version = "0.2.0" +version = "0.3.0" dependencies = [ + "ax-kspin", "bitflags 2.11.1", "dma-api", "enum_dispatch", @@ -6940,20 +7154,24 @@ dependencies = [ "log", "mbarrier", "num-align", - "spin 0.10.0", + "spin", "thiserror 2.0.18", "tock-registers 0.10.1", ] [[package]] name = "rsext4" -version = "0.4.0" +version = "0.4.1" dependencies = [ "bitflags 2.11.1", - "lazy_static", "log", + "spin", ] +[[package]] +name = "rust-hello" +version = "0.1.0" + [[package]] name = "rust_decimal" version = "1.42.0" @@ -7235,7 +7453,7 @@ version = "0.3.7" dependencies = [ "ax-percpu", "ctor 0.6.3", - "spin 0.10.0", + "spin", ] [[package]] @@ -7441,13 +7659,13 @@ dependencies = [ [[package]] name = "sg2002-tpu" -version = "0.1.1" +version = "0.1.2" dependencies = [ "ax-dma", "ax-errno", + "ax-kspin", "ax-memory-addr", "log", - "spin 0.10.0", ] [[package]] @@ -7585,17 +7803,6 @@ dependencies = [ "volatile 0.6.1", ] -[[package]] -name = "simple-sdmmc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f2f7127074b52811ae3b4757e33865a60a8b46e1402c028c301139e0b00d92" -dependencies = [ - "bitfield-struct 0.11.0", - "log", - "volatile 0.6.1", -] - [[package]] name = "siphasher" version = "1.0.3" @@ -7684,6 +7891,7 @@ dependencies = [ name = "some-serial" version = "0.4.1" dependencies = [ + "ax-kspin", "bitflags 2.11.1", "enum_dispatch", "fdt-edit", @@ -7692,7 +7900,6 @@ dependencies = [ "rdif-intc", "rdif-serial", "rdrive", - "spin 0.10.0", "thiserror 2.0.18", "tock-registers 0.10.1", "x86", @@ -7733,7 +7940,7 @@ dependencies = [ "smccc", "some-serial", "somehal-macros", - "spin 0.10.0", + "spin", "syn 2.0.117", "thiserror 2.0.18", "tock-registers 0.10.1", @@ -7757,7 +7964,7 @@ dependencies = [ "rdrive", "someboot", "somehal-macros", - "spin 0.10.0", + "spin", "thiserror 2.0.18", "tock-registers 0.10.1", ] @@ -7772,15 +7979,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - [[package]] name = "spin" version = "0.10.0" @@ -7835,7 +8033,7 @@ dependencies = [ [[package]] name = "starry-kernel" -version = "0.5.11" +version = "0.5.12" dependencies = [ "ax-alloc", "ax-config", @@ -7845,7 +8043,6 @@ dependencies = [ "ax-errno", "ax-feat", "ax-fs-ng", - "ax-hal", "ax-input", "ax-io", "ax-ipi", @@ -7874,19 +8071,18 @@ dependencies = [ "crab-usb", "ddebug", "downcast-rs", - "dw_apb_uart", "enum_dispatch", "event-listener", "extern-trait", "flatten_objects", - "gimli", + "gimli 0.33.0", "hashbrown 0.16.1", "indoc", "inherit-methods-macro", "kernel-elf-parser", "kmod-loader", "kprobe", - "lazy_static", + "ktracepoint", "linux-raw-sys 0.12.1", "lock_api", "num_enum", @@ -7899,7 +8095,8 @@ dependencies = [ "sg2002-tpu", "sg200x-bsp", "slab", - "spin 0.10.0", + "some-serial", + "spin", "starry-process", "starry-signal", "starry-vm", @@ -7916,7 +8113,7 @@ dependencies = [ [[package]] name = "starry-process" -version = "0.4.6" +version = "0.4.7" dependencies = [ "ax-kspin", "ax-lazyinit", @@ -7926,7 +8123,7 @@ dependencies = [ [[package]] name = "starry-signal" -version = "0.6.2" +version = "0.7.0" dependencies = [ "ax-cpu", "ax-errno", @@ -7944,7 +8141,7 @@ dependencies = [ [[package]] name = "starry-vm" -version = "0.5.8" +version = "0.5.9" dependencies = [ "ax-errno", "bytemuck", @@ -7953,14 +8150,14 @@ dependencies = [ [[package]] name = "starryos" -version = "0.5.11" +version = "0.5.12" dependencies = [ "anyhow", + "ax-driver", "ax-feat", - "ax-plat-riscv64-sg2002", + "ax-hal", "axbuild", "axplat-dyn", - "axplat-riscv64-visionfive2", "clap", "starry-kernel", "tokio", @@ -8156,6 +8353,16 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "terminal_size" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874" +dependencies = [ + "rustix 1.1.4", + "windows-sys 0.61.2", +] + [[package]] name = "terminfo" version = "0.9.0" @@ -8737,6 +8944,12 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +[[package]] +name = "tp-lexer" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5352c5c9721b4ded5d79c4ad60111b977601c09b202e860a3d79a6e4bdb098b0" + [[package]] name = "tracing" version = "0.1.44" @@ -8945,9 +9158,6 @@ name = "uguid" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c8352f8c05e47892e7eaf13b34abd76a7f4aeaf817b716e88789381927f199c" -dependencies = [ - "bytemuck", -] [[package]] name = "uluru" @@ -9026,6 +9236,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "ureq" version = "3.3.0" @@ -9075,7 +9291,7 @@ dependencies = [ "futures", "log", "num_enum", - "spin 0.10.0", + "spin", "thiserror 2.0.18", ] @@ -9134,6 +9350,13 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "uvc-fps" +version = "0.1.0" +dependencies = [ + "pkg-config", +] + [[package]] name = "uvc-frame-parser" version = "0.1.1" @@ -9183,6 +9406,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "vm-fdt" version = "0.3.0" @@ -9990,10 +10219,11 @@ dependencies = [ [[package]] name = "x86_vcpu" -version = "0.5.8" +version = "0.5.9" dependencies = [ "ax-crate-interface", "ax-errno", + "ax-kspin", "ax-memory-addr", "ax-page-table-entry", "axaddrspace", @@ -10008,7 +10238,6 @@ dependencies = [ "numeric-enum-macro", "paste", "raw-cpuid 11.6.0", - "spin 0.10.0", "tock-registers 0.10.1", "x86", "x86_64", @@ -10017,7 +10246,7 @@ dependencies = [ [[package]] name = "x86_vlapic" -version = "0.4.9" +version = "0.4.10" dependencies = [ "ax-errno", "ax-memory-addr", diff --git a/os/StarryOS/kernel/Cargo.toml b/os/StarryOS/kernel/Cargo.toml index 8f212e66b5..8946edcbf6 100644 --- a/os/StarryOS/kernel/Cargo.toml +++ b/os/StarryOS/kernel/Cargo.toml @@ -135,7 +135,6 @@ ddebug = "0.5" kprobe = "0.5" kmod-loader = "0.2" some-serial = { workspace = true, optional = true } -dw_apb_uart = { workspace = true, features = ["sg2002"], optional = true } sg200x-bsp = { workspace = true, optional = true } # 0.9 to match sg200x-bsp's internal tock-registers; cannot use workspace (0.10) # because Writeable trait must come from the same version as sg200x-bsp's types. diff --git a/os/StarryOS/kernel/src/kmod_loader.rs b/os/StarryOS/kernel/src/kmod_loader.rs index 6fe6febc48..9f9720bcf6 100644 --- a/os/StarryOS/kernel/src/kmod_loader.rs +++ b/os/StarryOS/kernel/src/kmod_loader.rs @@ -70,24 +70,24 @@ impl SectionMemOps for KmodSectionMem { Ok(r) => r, Err(_) => return false, }; - let mut new_flags = ax_hal::paging::MappingFlags::empty(); + let mut new_flags = ax_runtime::hal::paging::MappingFlags::empty(); if perms.contains(SectionPerm::READ) { - new_flags |= ax_hal::paging::MappingFlags::READ; + new_flags |= ax_runtime::hal::paging::MappingFlags::READ; } if perms.contains(SectionPerm::WRITE) { - new_flags |= ax_hal::paging::MappingFlags::WRITE; + new_flags |= ax_runtime::hal::paging::MappingFlags::WRITE; } if perms.contains(SectionPerm::EXECUTE) { - new_flags |= ax_hal::paging::MappingFlags::EXECUTE; + new_flags |= ax_runtime::hal::paging::MappingFlags::EXECUTE; } if aspace.protect(vaddr, self.size, new_flags).is_err() { return false; } for offset in (0..self.size).step_by(PAGE_SIZE_4K) { - ax_hal::asm::flush_tlb(Some(vaddr + offset)); + ax_runtime::hal::cpu::asm::flush_tlb(Some(vaddr + offset)); } if perms.contains(SectionPerm::EXECUTE) { - ax_hal::asm::flush_icache_all(); + ax_runtime::hal::cpu::asm::flush_icache_all(); } drop(aspace); let _ = original_flags; @@ -152,9 +152,9 @@ impl KernelModuleHelper for StarryKmodHelper { fn flsuh_cache(addr: usize, size: usize) { #[cfg(target_arch = "aarch64")] - ax_hal::asm::clean_dcache_range_to_pou(VirtAddr::from(addr), size); + ax_runtime::hal::cpu::asm::clean_dcache_range_to_pou(VirtAddr::from(addr), size); let _ = (addr, size); - ax_hal::asm::flush_icache_all(); + ax_runtime::hal::cpu::asm::flush_icache_all(); } } diff --git a/os/StarryOS/kernel/src/lib.rs b/os/StarryOS/kernel/src/lib.rs index 076225b9b0..174bf1f263 100644 --- a/os/StarryOS/kernel/src/lib.rs +++ b/os/StarryOS/kernel/src/lib.rs @@ -21,10 +21,10 @@ mod config; #[cfg(feature = "ebpf")] mod ebpf; mod file; +mod kmod_loader; mod kprobe; mod mm; mod perf_event; -mod kmod_loader; mod pseudofs; mod stop_machine; mod syscall; From 69f4f2af523cc6b39e451523e053979130a20d2b Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Wed, 27 May 2026 12:33:35 +0800 Subject: [PATCH 7/8] fix(starry-kernel): add cfg(ebpf) gate for perf_event module and trigger perf_event.rs references crate::ebpf::run_bpf_prog which is only available under the ebpf feature. Add cfg gates to prevent compilation failure when ebpf feature is disabled. --- os/StarryOS/kernel/src/lib.rs | 1 + os/StarryOS/kernel/src/perf_event.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/os/StarryOS/kernel/src/lib.rs b/os/StarryOS/kernel/src/lib.rs index 174bf1f263..7010d5b688 100644 --- a/os/StarryOS/kernel/src/lib.rs +++ b/os/StarryOS/kernel/src/lib.rs @@ -24,6 +24,7 @@ mod file; mod kmod_loader; mod kprobe; mod mm; +#[cfg(feature = "ebpf")] mod perf_event; mod pseudofs; mod stop_machine; diff --git a/os/StarryOS/kernel/src/perf_event.rs b/os/StarryOS/kernel/src/perf_event.rs index 9d0e7a5e36..63d0de6b2d 100644 --- a/os/StarryOS/kernel/src/perf_event.rs +++ b/os/StarryOS/kernel/src/perf_event.rs @@ -282,6 +282,7 @@ impl PerfEvent { if !self.enabled { return; } + #[cfg(feature = "ebpf")] if let Some(prog_fd) = self.prog_fd && let Err(e) = crate::ebpf::run_bpf_prog(prog_fd, ctx) { From a8f36bbf1059f123341b259e488cb8c0f697bb59 Mon Sep 17 00:00:00 2001 From: CN-TangLin <2242120212@qq.com> Date: Wed, 27 May 2026 15:04:23 +0800 Subject: [PATCH 8/8] ci: rebase onto latest dev, resolve Cargo.lock conflict