Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
a6ba367
Implement GPT and MBR partition scanning and volume management
ZR233 May 26, 2026
70f6424
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 26, 2026
e06f1df
fix: update dependencies in Cargo.lock and add mmio-api
ZR233 May 26, 2026
a260430
feat: refactor IRQ handling by introducing SharedDriver for better sa…
ZR233 May 26, 2026
bf92f02
Refactor NVMe and RamDisk block drivers to separate read and write qu…
ZR233 May 26, 2026
dccc6f0
Refactor feature flags in TOML configuration files
ZR233 May 26, 2026
58d8889
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 26, 2026
8a437b5
fix(deps): update jiff and jiff-static to version 0.2.26 and add depe…
ZR233 May 26, 2026
e7f178f
feat(tests): add NVMe rootfs read/write tests for multiple architectu…
ZR233 May 26, 2026
1f68260
feat(tests): add QEMU configuration files for multiple architectures …
ZR233 May 27, 2026
b9c8b51
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
97cfbd2
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
694c9cd
fix(starry): restore OrangePi list-devices feature
ZR233 May 27, 2026
6a5eb3a
fix(ax-driver): gate OS glue for host tests
ZR233 May 27, 2026
6ec30e3
fix(ax-driver): restore rtc feature entry
ZR233 May 27, 2026
b93dabc
fix(ax-driver): gate bare-metal glue by feature
ZR233 May 27, 2026
8f98285
fix(ax-driver): expose block and net binding features
ZR233 May 27, 2026
1aa0cbf
fix(ax-driver): sync block read DMA buffers
ZR233 May 27, 2026
2a13cc9
fix(sdhci-host): clear cached irq status for new commands
ZR233 May 27, 2026
9a9870b
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
175256f
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
340a066
fix(starry): stabilize DHCP qemu CI test
ZR233 May 27, 2026
cd0066e
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
2c66405
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
8afc97f
fix(starry): tolerate apk-curl mirror outages
ZR233 May 27, 2026
b43cdad
fix(starry): avoid dynamic curl installs in apk-curl
ZR233 May 27, 2026
5c363f8
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
78678c3
fix(starry): preinstall inotifywait test tool
ZR233 May 27, 2026
32792d4
ci: avoid PR diff API in path filter
ZR233 May 27, 2026
b5493f8
fix(starry): skip apk-curl before mirror fetch without curl
ZR233 May 27, 2026
905ca43
fix(starry): install inotifywait via host cmake phase
ZR233 May 27, 2026
cd96ba6
fix(starry): extend loongarch util-linux timeout
ZR233 May 27, 2026
37f418c
fix(starry): preinstall procps test tools
ZR233 May 27, 2026
6ae025c
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
9d90b59
chore(ci): refresh pr merge status
ZR233 May 27, 2026
4d94daf
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 27, 2026
a05f66c
fix(starry-kernel): enable dynamic usbfs dependencies
ZR233 May 27, 2026
2544262
fix(starry): stabilize nonblocking TCP bugfix test
ZR233 May 27, 2026
413ac55
fix(starry): autorun grouped qemu tests
ZR233 May 27, 2026
8c89922
fix(starry): bound zombie bugfix synchronization
ZR233 May 27, 2026
37574fd
fix(arceos): stabilize remote wait queue test
ZR233 May 27, 2026
8c94ae9
fix(starry): isolate zombie bugfix tests
ZR233 May 27, 2026
6d0e0e7
fix(starry): prebuild lua test packages
ZR233 May 27, 2026
da6c8d6
fix(starry): isolate tty bugfix tests
ZR233 May 27, 2026
4f92e94
fix(starry): bound busybox nologin test
ZR233 May 27, 2026
b6083bd
fix(starry): bound apt package test
ZR233 May 27, 2026
8259911
fix(arceos): register pthread before entry
ZR233 May 27, 2026
75638b0
fix(starry): raise aarch64 util-linux timeout
ZR233 May 27, 2026
6ff66b2
fix(ci): keep clippy incremental for local workspace deps
ZR233 May 27, 2026
8649d36
fix(starry): raise riscv64 util-linux timeout
ZR233 May 27, 2026
e063c36
fix(starry): stabilize grouped qemu cases
ZR233 May 27, 2026
818671f
refactor(tests): update timeout and success/failure handling in QEMU …
ZR233 May 28, 2026
1e7d4e5
Add APK add filesystem and network equivalence tests
ZR233 May 28, 2026
d62fb8f
feat(dhcp): add QEMU DHCP test cases and configurations for multiple …
ZR233 May 28, 2026
73a68ed
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 28, 2026
9363dff
feat(block): enhance read/write operations with batch processing and …
ZR233 May 28, 2026
0ddef9d
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 28, 2026
d1c357c
feat(rdif-block): add transfer planner and request validation
ZR233 May 28, 2026
a33de28
fix(ax-plat-x86-pc): keep virtio net on firmware IRQ line
ZR233 May 28, 2026
1ee9ebc
Merge remote-tracking branch 'up/dev' into rfct/blk
ZR233 May 28, 2026
d579846
refactor(rdif-block): narrow transfer planner API
ZR233 May 28, 2026
02189f9
refactor(rdif-block): split modules and slim queue contract
ZR233 May 28, 2026
0dcb3e2
refactor(rdif-block): remove queue config and topology
ZR233 May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/cross-kernel-driver/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ For nontrivial driver design or refactoring, read `references/architecture.md` b

Use `&mut self` APIs where exclusive access is the natural contract. Do not require callers to provide an OS lock as part of the portable abstraction.

For block-device integration in `axplat-dyn`, wrap the portable driver with `rd_block::Interface` and `rd_block::IQueue`, then register it through the existing `PlatformDeviceBlock::register_block` path. Keep `rd-block`/`rdrive` adapter code in platform glue or behind an explicit adapter feature unless the crate's purpose is to expose that interface.
For block-device integration in ArceOS, expose portable block drivers through `rdif_block::Interface` and `rdif_block::IQueue`. Keep queue creation, DMA/wait policy, and IRQ registration in OS glue/runtime layers; the portable boundary should be submit/poll requests plus `handle_irq() -> Event`.

Prefer small interfaces:

Expand Down
19 changes: 10 additions & 9 deletions .claude/skills/cross-kernel-driver/references/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,15 @@ Runtime/platform integration belongs elsewhere:
- `platform/axplat-dyn/src/drivers/soc/<vendor>/...` for SoC platform glue.
- `components/axdriver_crates/axdriver_<type>` for common ArceOS-facing driver traits/adapters.

For block devices in `axplat-dyn`, the existing integration path is:
For block devices in `axplat-dyn`, the integration path is:

- probe/FDT/MMIO setup in `platform/axplat-dyn/src/drivers/blk/<driver>.rs`
- wrap the portable driver in an `rd_block::Interface`
- expose a queue as `rd_block::IQueue`
- register through `PlatformDeviceBlock::register_block`, which creates `rd_block::Block::new(dev, &DmaImpl)` and registers it with `rdrive`
- expose the portable driver as `rdif_block::Interface`
- expose queues as `rdif_block::IQueue` with `submit_request()` / `poll_request()`
- register boxed `rdif_block::Interface` devices through the ArceOS driver glue and `rdrive`
- keep ArceOS sync block reads/writes, DMA bounce buffers, and IRQ registration policy above the portable interface

Keep `rd-block`/`rdrive` coupling in this adapter layer or behind an explicit adapter feature. Portable driver core should not need to know how `rdrive` probes or registers devices.
Keep `rdrive` coupling in this adapter layer or behind an explicit adapter feature. Portable driver core should not need to know how `rdrive` probes or registers devices.

## Dependency Boundaries

Expand Down Expand Up @@ -172,11 +173,11 @@ Runtime wrappers can then choose:

Avoid a single global `Driver::poll` if the hardware naturally exposes multiple queues or engines. Avoid a "big object + big lock + callbacks" shape unless the device is truly that simple.

For a block queue adapter, align portable queue state with `rd_block::IQueue`:
For a block queue adapter, align portable queue state with `rdif_block::IQueue`:

- `buff_config()` should expose block-size, alignment, and DMA mask constraints.
- `submit_request()` should allocate/map DMA buffers, program descriptors, and return a request id.
- `poll_request()` should check completion and translate device status into `rd_block::BlkError` in the adapter.
- `buffer_config()` should expose block-size, alignment, and DMA mask constraints.
- `submit_request()` should program descriptors and return a request id without installing OS wakeups.
- `poll_request()` should check completion and return `RequestStatus::Pending` or `RequestStatus::Complete`.
- Keep descriptor ownership and DMA map/unmap pairing explicit for each request id.

## Concurrency Rules
Expand Down
39 changes: 4 additions & 35 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -308,8 +308,6 @@ riscv_vplic = { version = "0.4.12", path = "components/riscv_vplic" }
nvme-driver = { version = "0.4.2", path = "drivers/blk/nvme-driver" }
pcie = { version = "0.6.1", path = "drivers/pci/pcie" }
ramdisk = { version = "0.1.1", path = "drivers/blk/ramdisk" }
rd-block = { version = "0.1.2", path = "drivers/blk/rd-block" }
rd-block-volume = { version = "0.1.0", path = "drivers/blk/rd-block-volume" }
rd-net = { version = "0.1.1", path = "drivers/net/rd-net" }
rdif-base = { version = "0.8.1", path = "drivers/interface/rdif-base" }
rdif-block = { version = "0.7.1", path = "drivers/interface/rdif-block" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ ax-page-table-entry = { workspace = true }
ax-config-macros = { workspace = true }
ax-plat-aarch64-peripherals = { workspace = true }
ax-cpu = { workspace = true }
ax-driver = { workspace = true, features = ["pci", "virtio"] }
ax-driver = { workspace = true, features = ["virtio"] }
ax-plat = { workspace = true }
axklib = { workspace = true, optional = true }
mmio-api.workspace = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ uart_16550 = "0.5"

ax-config-macros = { workspace = true }
ax-cpu = { workspace = true }
ax-driver = { workspace = true, features = ["pci"] }
ax-driver = { workspace = true }
ax-plat = { workspace = true }
axklib = { workspace = true, optional = true }
mmio-api.workspace = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ some-serial.workspace = true

ax-config-macros = { workspace = true }
ax-cpu = { workspace = true }
ax-driver = { workspace = true, features = ["pci", "virtio"] }
ax-driver = { workspace = true, features = ["virtio"] }
ax-plat = { workspace = true }
axklib = { workspace = true, optional = true }
mmio-api.workspace = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ dw_uart_rs = "0.2.0"
log = { workspace = true }
ax-config-macros = { workspace = true }
ax-cpu = { workspace = true, features = ["xuantie-c9xx"] }
ax-driver = { workspace = true, features = ["block"] }
ax-driver = { workspace = true }
ax-kspin = { workspace = true }
ax-lazyinit = { workspace = true }
ax-plat = { workspace = true }
axklib.workspace = true
rd-block.workspace = true
rdif-block.workspace = true
sg200x-bsp.workspace = true
spin.workspace = true

Expand Down
Loading
Loading