Commit Graph

263 Commits

Author SHA1 Message Date
Zhang Junyang 9e2d8e9f08 Use device addresses instead of physical addresses 2025-09-02 17:53:55 +08:00
Zhang Junyang 4e2bdc65de Refactor implicit `Arc` APIs for DMA 2025-09-02 17:53:55 +08:00
Zhang Junyang a6520880ab Unify memory object slicing 2025-09-02 17:53:55 +08:00
Zhang Junyang eb69aa4fb9 Unify address and size APIs for memory objects 2025-09-02 17:53:55 +08:00
Chen Chengjun fc5a12356a Fix LOONGARCH clippy warnings 2025-08-19 19:20:54 +08:00
Chen Chengjun 9507475102 Fix RISCV clippy warnings 2025-08-19 19:20:54 +08:00
Ruihan Li cdd28787ed Replace `write_vals` by `fill_zeros` in `VmIo` 2025-08-10 16:40:11 +08:00
Ruihan Li 2700d88bef Provide efficient `VmIo` with VM readers/writers 2025-08-10 16:40:11 +08:00
Ruihan Li d73f1016a1 Set softfloat targets for ARM/LoongArch/RISC-V 2025-07-29 11:13:59 +08:00
王英泰 434d75c0f0 Cancel the use of floating-point instructions in kernel log 2025-07-25 17:37:24 +08:00
王英泰 fc72398fbc Change the method to identify the legacy virtio device 2025-07-25 17:37:24 +08:00
王英泰 cc280272cc Add the RTC time comps for LoongArch 2025-07-25 17:37:24 +08:00
Cautreoxit 2e3d8ea867 Add extension support for keyboard 2025-07-22 15:16:12 +08:00
Cautreoxit b8b9d8bff6 Add release support for keyboard 2025-07-22 15:16:12 +08:00
Chen Chengjun b90b79810c Provide more powerful macros to assist in implementing the SysTree-related traits 2025-07-14 20:35:05 +08:00
Chen Chengjun 774291611c Add two error types in aster_systree::Error 2025-07-14 20:35:05 +08:00
Chen Chengjun 9c68d96fa2 Attach SysPerms to systree nodes and attributes 2025-07-14 20:35:05 +08:00
Chen Chengjun e229eb379b Enable getting path through SysObj 2025-07-14 20:35:05 +08:00
Ruihan Li a5e927b675 Make the framebuffer backspace work 2025-07-14 20:24:29 +08:00
Ruihan Li b1079c2bc5 Add support for font setting 2025-07-14 20:24:29 +08:00
Ruihan Li 9f82a0c89f Clean up the console crate 2025-07-14 20:24:29 +08:00
Ruihan Li 801ab865b7 Make paths of `TrapFrame` unique 2025-07-05 18:19:26 +08:00
Ruihan Li 706f62e299 Support ANSI escape sequences 2025-07-03 17:47:56 +08:00
Ruihan Li abbf152d74 Re-enable framebuffer 2025-07-03 17:47:56 +08:00
Qingsong Chen 5e3e23bf7c Add basic i8042 keyboard support 2025-06-27 12:56:55 +08:00
Ruihan Li b96c8f9ed2 Make `ostd::trap::irq` public 2025-06-23 22:53:35 +08:00
Hsy-Intel 65fd1aac81 Sync CVM guest feature dependencies between kernel and virtio components 2025-06-23 10:32:09 +08:00
Ruihan Li a3c5ab8cb4 Move virtio-mmio bus outside OSTD 2025-06-19 15:10:42 +08:00
Wang Siyuan d5b12532a8 Require `T: Send` for `CpuLocal<T, S>` 2025-06-16 12:09:13 +08:00
Ruihan Li 67065835ef Redefine the TTY driver interface 2025-06-09 13:10:34 +08:00
Chen Chengjun c56aee92f4 Re-organize some systree-related code 2025-06-09 11:13:48 +08:00
Chen Chengjun a67bd8cdc9 Add macros to help implementing SysObj trait 2025-06-09 11:13:48 +08:00
Chen Chengjun 1dd1c8c775 Enable read and write operations of the attribute to handle offset 2025-06-09 11:13:48 +08:00
Wang Siyuan dfd3042276 Add dynamically-allocated CPU-local objects 2025-06-03 23:24:32 +08:00
Zejun Zhao ffb4097436 Add RISC-V timer support 2025-05-29 19:51:02 +08:00
stuuupidcat 95744692a5 Remove unnecessary #[inline] attributes 2025-05-22 12:19:21 +08:00
Ruihan Li 54bd64269b Rename `systree` to `aster-systree` 2025-05-03 18:22:11 +08:00
Ruihan Li f720c05706 Fail the CI if workspace lints are not enabled 2025-05-03 18:22:11 +08:00
Qingsong Chen 88f08de3af Refactor framebuffer 2025-04-29 19:48:45 +08:00
Fabing Li 63831dc2df Add ktest cases 2025-04-24 20:03:54 +08:00
Fabing Li 79b0866259 Add sysfs implementation 2025-04-24 20:03:54 +08:00
Zejun Zhao 3aa1079ca6 Clarify the usage of ostd::arch 2025-04-18 13:26:16 +08:00
Ruihan Li d6e40933b8 Move the log lock to a better location 2025-04-16 21:59:24 +08:00
jiangjianfeng 7d24e63216 Move network polling code to bottom half 2025-04-15 14:54:51 +08:00
jiangjianfeng 9804f053f2 Add guard which disables bottom half 2025-04-15 14:54:51 +08:00
Ruihan Li a1f81df263 Remove `ostd/src/mm/offset.rs` 2025-04-15 09:15:22 +08:00
Chen Chengjun a21e895102 Enable RCU to read reference to stored pointers 2025-04-10 14:42:51 +08:00
Cautreoxit b4a1dc03f3 Delete useless visibility for BARs 2025-03-27 18:44:15 +08:00
Cautreoxit 4fff7cdc22 Add an API for BioRequest to return the number of sectors 2025-03-26 10:38:24 +08:00
jiangjianfeng 0e1c660225 Make VmReader's several methods accept `&mut self` 2025-03-25 14:25:08 +08:00
Yuke Peng 1f03955f51 Change IoMem directory 2025-03-22 17:38:30 +08:00
Ruihan Li 9e1c939a3f Remove `static_assertions` 2025-03-06 16:35:21 +08:00
Ruihan Li 0d36375dfa Avoid `generic_const_exprs` feature 2025-03-06 16:35:21 +08:00
Yuke Peng 96d83e43b4 Make VirtioConsolesPrinter heapless 2025-03-05 20:24:59 +08:00
Zhang Junyang 55ee4bda2c Use RCU for console device callbacks 2025-03-03 09:24:49 +08:00
Fabing Li cbb4b4e631 Fix lint errors 2025-02-27 11:36:41 +08:00
Qingsong Chen 04be02efb7 Add init_component for mlsdisk 2025-02-11 11:38:43 +08:00
Qingsong Chen f6e040ec94 Add a basic ktest for mlsdisk 2025-02-11 11:38:43 +08:00
Qingsong Chen d8dc153be9 Fix deadlock of `CurrentTx` in mlsdisk 2025-02-11 11:38:43 +08:00
Qingsong Chen c040df72b3 Rename `SwornDisk` to `MlsDisk` 2025-02-11 11:38:43 +08:00
jiangjianfeng 55713b88c4 Remove unused dependencies 2025-02-10 10:36:56 +08:00
Ruihan Li 95bbc7f367 Enforce `#[expect(lint)]` 2025-02-08 15:10:04 +08:00
Ruihan Li 0dca168717 Use `#[expect(lint)]`, not `#[allow(lint)]` 2025-02-08 15:10:04 +08:00
Ruihan Li 1c4e88e648 Fix `#[allow(dead_code)]` in virtio 2025-02-08 15:10:04 +08:00
Ruihan Li b415538097 Remove useless `#[allow(lint)]` 2025-02-08 15:10:04 +08:00
Zhang Junyang 397ce9652f Refactor boot modules to make heap allocation explicit 2025-01-02 10:41:51 +08:00
Zhang Junyang 51349a3da1 Heapless memory region initialization 2025-01-02 10:41:51 +08:00
Qingsong Chen 56a137dc56 Add mlsdisk as a component
Co-authored-by: Shaowei Song <songshaowei.ssw@antgroup.com>
2025-01-01 09:19:32 +08:00
Zhang Junyang 983a6af3cc Polish the doc and rename variables in `ostd::mm` 2024-12-27 12:12:51 +08:00
Zhang Junyang cdac59beda Implement a new set of physical page APIs 2024-12-27 12:12:51 +08:00
Zhang Junyang c9a37ccab1 Renaming concepts around pages and frames
This commit renames `Frame` -> `UntypedFrame` and `Page` -> `Frame`.
So do other concepts in the following list:
 - `Segment` -> `UntypedSegment`,
 - `ContPages` -> `Segment`,
 - `DynPage` -> `AnyFrame`,
 - `PageMeta` -> `FrameMeta`,
 - `FrameMeta` -> `UntypedMeta`.

This commit also re-organized the source in the `mm/page` and `mm/frame`
module to accommodate the changes.
2024-12-27 12:12:51 +08:00
jiangjianfeng 9a540d0fb6 Notify virtqueue in a batch manner 2024-12-19 14:49:56 +08:00
Shaowei Song 4cb85f0adb Fix dependency issue between components `logger` and `virtio` 2024-12-13 10:36:45 +08:00
Ruihan Li 28edc57dd0 Fix the nested bottom half 2024-12-05 13:42:12 +08:00
Chen Chengjun 0cb2ea562e Inject the logger for Asterinas 2024-12-04 13:24:06 +08:00
Shaowei Song ecad132ec9 Refactor the block layer by introducing `BioSegmentPool` 2024-12-02 13:25:20 +08:00
Shaowei Song d37da228ab Improve flexibility of `DmaStreamSlice` 2024-12-02 13:25:20 +08:00
Marsman1996 6d3bb5a9d0 Fix compile error caused by updated `Step::steps_between` in Rust 2024-12-01 18:56:28 +08:00
Qingsong Chen f762eb8913 Remove the `lazy_static` dependency 2024-11-28 15:28:30 +08:00
Qingsong Chen 81898362b6 Add virtio legacy interface 2024-11-21 19:10:06 +08:00
jiangjianfeng 495c93c2ad Refactor Rwlock to take type parameter 2024-11-21 15:46:10 +08:00
Jianfeng Jiang c8c9b9753e Make all network benchmark run with tap backend and vhost on 2024-11-20 20:24:03 +08:00
Cautreoxit 885950c2a4 Add VirtioBlockFeature to cache virtio-blk's features 2024-11-17 15:32:56 +08:00
Cautreoxit 3cb7f5b721 Rename the methods in the interface of VirtioTransport 2024-11-17 15:32:56 +08:00
Cautreoxit 32572e22d9 Implement flush for virtio-blk 2024-11-17 15:32:56 +08:00
jiangjianfeng 38682e3ed9 Assign callback to shared irq if there's no single irq line 2024-11-12 17:47:40 +08:00
jiangjianfeng 9965802f65 Disable send callback if sendqueue is not full 2024-11-12 17:47:40 +08:00
Shaowei Song aa52e3980e Minor fix on virtio-blk's config 2024-11-06 11:00:43 +08:00
Hsy-Intel b7d101b98c Fix MMIO read issue 2024-10-21 17:49:56 +08:00
Chen Chengjun 2f511069ee Move SoftIRQ implementations to softirq component 2024-10-18 09:35:40 +08:00
jiangjianfeng 090149eed7 Add tcp latency test over virtio-net 2024-10-14 20:59:25 +08:00
Zhang Junyang 9e4257b655 Fix multiple issues pointed out by the new compiler 2024-10-13 22:32:05 +08:00
Zhang Junyang 909639fd70 Separate `SegmentSlice` from `Segment` 2024-10-09 19:23:46 +08:00
Yuke Peng 7d5a2b7a79 [VirtIO] Correct the error code when device not match 2024-10-04 10:28:59 +08:00
jiangjianfeng f793259512 Avoiding busy loop in sending packet and optimize device caps 2024-09-30 15:03:58 +08:00
YanWQ-monad 4fa0e6334b Add RISC-V base support 2024-09-30 10:02:08 +08:00
YanWQ-monad 839c2a6689 Extract shared code from timer 2024-09-30 10:02:08 +08:00
Ruihan Li 51334c4a36 Clean up smoltcp dependencies 2024-09-26 15:22:16 +08:00
Zhang Junyang 9a79ecbcbe Clean up the frame buffer state in `ostd::mm` 2024-09-21 15:38:15 +08:00
Ruihan Li 2bda8d17c4 Rename some misleading method names 2024-09-17 17:46:56 +08:00
Ruihan Li cefeea7b50 Revise `IoMem::resize` into `IoMem::slice` 2024-09-17 17:46:56 +08:00
Ruihan Li c8ba695c85 Implement `VmIoOnce` for `IoMem` 2024-09-17 17:46:56 +08:00
Ruihan Li 1b9b76d27c Make use of new `SpinLock` APIs 2024-09-13 21:31:20 +08:00
Zhang Junyang 53ce7df53c Warn instead of panic on long clock update interval 2024-09-12 17:53:14 +08:00
Shaowei Song e6f465b553 Replace all the ring buffers with the new one 2024-08-29 00:33:47 +08:00
Cautreoxit 86f09eef75 Fix all spelling mistakes in history by typos tool 2024-08-27 12:19:48 +08:00
Yuke Peng bb4751741a Bump smoltcp to newest git version 2024-08-22 22:58:36 +08:00
Shaowei Song dce796cdde Refactor all io APIs of vfs based on `VmReader`/`VmWriter` 2024-08-22 22:54:30 +08:00
Shaowei Song 2102107be1 Refactor `VmReader`&`VmWriter` as given fallibility marker 2024-08-21 22:24:15 +08:00
Cautreoxit c44447d54b Refactor the API of spinlocks 2024-08-18 21:06:40 +08:00
Chen Chengjun 364ef48e2f Fix a concurrency bug in clocksource 2024-08-17 17:57:26 +08:00
YanWQ-monad 97fab9edea Prepare aster-time for platform-dependent implementations 2024-08-09 08:53:24 +08:00
Shaowei Song 8dce83605f Add sys_fallocate 2024-08-08 21:10:38 +08:00
Ruihan Li b1ea422efa Fix accesses to VirtIO queue DMA 2024-08-06 11:34:15 +08:00
Shaowei Song 20a856b07f Revise the naming of all sync/async io APIs 2024-07-30 20:58:07 +08:00
Zhang Junyang 870d542f60 Remove the error of `BlkFeatures::MQ` to support multi-processor startup
Co-authored-by: Chuandong Li <lichuand@pku.edu.cn>
2024-07-30 10:24:09 +08:00
Shaowei Song ff525112d0 Revise the `BlockDevice` trait 2024-07-29 13:54:13 +08:00
Shaowei Song b1cec501d8 [page_cache] Gap within one page should be filled with zeros in shrink case 2024-07-25 21:31:18 +08:00
Jianfeng Jiang f86583dbce Make essential changes for publishing OSTD 2024-07-18 18:18:05 +08:00
Ruihan Li 3d2a0c33af Clean up the virtio console IRQ handler a bit 2024-07-14 16:43:23 +08:00
Ruihan Li a465ec1346 Work around a QEMU bug in virtio console pasting 2024-07-14 16:43:23 +08:00
Yuke Peng d43fbd88ba Add documentation to bus 2024-07-09 19:42:15 +08:00
Yuke Peng 0970adb37b Add documentation to x86/device 2024-07-09 19:42:15 +08:00
Jianfeng Jiang 3de8a9330a Fix the OSDK CI failure 2024-06-27 15:45:49 +08:00
Jianfeng Jiang 59350a8578 Rename aster-frame to ostd 2024-06-27 15:45:49 +08:00
Shaocong Sun 1b22267a87 Add readahead for pagecache 2024-06-26 20:22:20 +08:00
Zhang Junyang cda8ffa7da Fix the usage of underscores in Cargo manifest keys 2024-06-21 10:57:08 +08:00
Zhang Junyang ab1d931cb7 Adjust for Rust unstable feature's stability change 2024-06-21 10:57:08 +08:00
Anmin Liu 9f67fcdc58 Reuse Rxbuffer and update `qemu_args.sh` for vsock 2024-06-11 17:51:36 +08:00
Anmin Liu 646406115e Optimize vsock code structure 2024-06-11 17:51:36 +08:00
Anmin Liu 60dd17fdd3 Support calling from inside via vsock 2024-06-11 17:51:36 +08:00
Anmin Liu 48f69c25a9 Support nonblocking option 2024-06-11 17:51:36 +08:00
Anmin Liu ad140cec3c Implement vsock socket layer 2024-06-11 17:51:36 +08:00
Anmin Liu 83a7937334 Make vsock device optional 2024-06-11 17:51:36 +08:00
Anmin Liu be45f0ee72 Fix format and clippy errors 2024-06-11 17:51:36 +08:00
Anmin Liu 52f808e315 Implement vsock driver 2024-06-11 17:51:36 +08:00
Jianfeng Jiang 33a7da9991 Fix typos in API documentation 2024-06-09 22:57:14 +08:00
LI Qing c6aa9f9ee8 Limit the number of segments in single bio request 2024-06-05 16:13:59 +08:00
Zhang Junyang 7095b37e7e Refactor the source structure in `aster_frame::mm` 2024-06-03 22:16:02 +08:00
Zhang Junyang 14e1b1a9fc Rename various concepts related to memory management 2024-06-03 22:16:02 +08:00
Chen Chengjun c02eacd50c Use deny(unsafe_code) instead of forbid(unsafe_code) 2024-05-31 16:05:58 +08:00
Chen Chengjun b226928349 Remove the timer module from the aster-frame and adjust the related code 2024-05-20 16:09:27 +08:00
Chen Chengjun c3d0c59041 Fix the logics for the coarse resolution clock id in VDSO. 2024-05-09 17:34:10 +08:00
Zhang Junyang d1990869ae Make ID allocator a separate crate and use it in the frame 2024-05-09 14:35:12 +08:00
Jianfeng Jiang cd3faa8123 Inherit HasDaddr for reference type 2024-04-29 20:33:57 +08:00
Jianfeng Jiang a482c87696 Remove add_buf from VirtQueue 2024-04-29 20:33:57 +08:00
Jianfeng Jiang 2256f6ae8a Extend Safeptr to support DmaStream 2024-04-29 20:33:57 +08:00
Jianfeng Jiang 345ab8f838 Add write_vals for VmIo 2024-04-29 20:33:57 +08:00
Jianfeng Jiang abb377b695 Replace SpinLock with RwLock in driver callbacks 2024-04-29 20:33:57 +08:00
Jianfeng Jiang cd1575bc6d Refactor virtio drivers with DMA APIs 2024-04-29 20:33:57 +08:00