Commit Graph

2668 Commits

Author SHA1 Message Date
Ron Williams 865122e92f Fix serial console login 2024-10-10 18:45:14 +00:00
4lDO2 0965c1e22b Allow aarch64 test to fail. 2024-10-07 10:20:51 +02:00
4lDO2 8d4ee26ff1 Fix profiling && + toggle support via debug scheme. 2024-10-07 10:20:51 +02:00
Dmitry Mottl dc1ba28f91 Updates .helix config to the new file format 2024-10-01 14:36:11 +00:00
4lDO2 ad16b747ea Restrict auto-fcntl to non-v2 schemes. 2024-09-27 21:36:22 +02:00
IncompententPirate fc5d246b30 remove wrapper functions 2024-09-26 22:34:55 +00:00
Andrey Turkin 14eb140f7a Refactor panic stack walking 2024-09-26 19:22:21 +03:00
Andrey Turkin 755694494b Factor KernelMapper out of arch
Same implementation on all the platforms. Also remove mutable Deref as it allowed circumventing RO check
2024-09-25 21:51:39 +03:00
4lDO2 539dc5a24e Remove SYS_UMASK. 2024-09-25 19:55:39 +02:00
Andrey Turkin d08861e586 Upgrade fdt library to the very latest
The new helpers remove a lot of boilerplace. Unfortunately some rough edges still remain (in particular issue gh#12 which renders interrupts() helper useless)
2024-09-25 06:51:02 +03:00
4lDO2 32e114885b Update RMM. 2024-09-24 19:33:27 +02:00
4lDO2 0a3ce63d40 Update syscall 2024-09-24 19:18:23 +02:00
4lDO2 71538efc06 Allow thread exit to optionally deallocate stack. 2024-09-24 19:18:23 +02:00
4lDO2 9a0192fc94 Prevent duplicate idempotent signals. 2024-09-24 19:18:23 +02:00
4lDO2 fcb2e2be3a Pass si_uid and si_pid to kill signals. 2024-09-24 19:18:23 +02:00
4lDO2 7def7ce6e3 Extend size of sig{en,de}queue payload. 2024-09-24 19:18:22 +02:00
4lDO2 54b1fbe453 Implement queued signals.
This currently needs to be done in the kernel for synchronization
reasons, but it's possible all delivery parts can later be moved to
userspace.
2024-09-24 19:18:22 +02:00
4lDO2 6d9cf30445 WIP: realtime signals 2024-09-24 19:18:20 +02:00
Andrey Turkin dbbbfcf48a Update RMM 2024-09-24 19:23:08 +03:00
Jeremy Soller edb3a87578 Merge branch 'riscv' into 'master'
Fixes and changes to make RISC-V paging work

See merge request redox-os/rmm!14
2024-09-24 12:51:39 +00:00
Andrey Turkin ed8bcfca1f Add write combining page flags where applicable 2024-09-24 08:26:02 +03:00
Andrey Turkin 192dd8283f RISC-V: implement TLB flush 2024-09-24 08:26:01 +03:00
Andrey Turkin f51cd00f00 Remove read/write flags from common PDE flags.
RISC-V convention marks PDE with no read/write/execute, so we can't have none of this flags set there. Remove their setting from PDE handling code and instead set them as appropriate in arch-specific defaults.

Also enable both readonly and readwrite flags to be non-zero (as long as their intersection completely masks both of them), as required for RISC-V PTE handling.
2024-09-24 08:24:18 +03:00
Andrey Turkin a96ea6f5f3 Allow physical address bits be anywhere in PTE entry
Before this commit, RMM assumed base physical address was presented in PTE as is, i.e. physical page address was shifted exactly to PAGE_SHIFT, so physical address can be extracted from PTE by simply masking off some bits and can be placed in PTE by simple addition/OR.

This is not the case for RISC-V which has 4Kb base page so 12 bits PAGE_SHIFT, yet physical page address is only shifted 10 bits in PTE.

This commit removes this assumption.

 NOTE: This commit changes meaning of constants:
 * ENTRY_ADDRESS_SIZE from "total physical size in bytes" to "total physical size in PAGES"
 * ENTRY_ADDRESS_MASK from "mask of physical bits in PTE" to "mask of physical bits starting at bit 0"
2024-09-23 08:47:27 +03:00
Andrey Turkin b7d3acf606 Separate leaf page and directory pages USER flag
This is required for RISC-V. Privileged spec says:

> For non-leaf PTEs, the D, A, and U bits are reserved for future standard use.
> Until their use is defined by a standard extension, they must be cleared by software
> for forward compatibility.

QEMU fails address translation if it sees any of these flags set on non-leaf page entry.
2024-09-23 08:47:23 +03:00
4lDO2 b485b1b3ea Update RMM. 2024-09-22 15:22:01 +02:00
Jeremy Soller bb27f57228 Merge branch 'fix_bump' into 'master'
Fix bump allocator initialization

See merge request redox-os/rmm!13
2024-09-22 13:20:33 +00:00
4lDO2 d95ea6598f Fix bump allocator. 2024-09-22 10:27:06 +02:00
4lDO2 960e79b107 Treat broken pipes as IO-capable in fevent. 2024-09-19 10:41:40 +02:00
4lDO2 ce9f699f8f Add unit tests to CI. 2024-09-17 23:10:36 +02:00
4lDO2 d498eefb2f Disable userspace feature in redox-syscall.
This prevents the kernel from being able to accidentally call itself
using the syscall instruction.
2024-09-17 19:24:26 +02:00
4lDO2 ef499f81fc Support compiling for host, allowing unit tests. 2024-09-17 19:24:23 +02:00
4lDO2 a0d0eac8aa Optimally divide responsibility for borrow free.
This appears to slightly improve performance.
2024-09-14 10:49:40 +02:00
4lDO2 031fdea089 Discard empty names in root scheme getdents. 2024-09-13 15:26:24 +02:00
4lDO2 97ea7ea6ec Disable syscall debug 2024-09-12 10:29:11 +02:00
4lDO2 e3e05ebca8 Fix root scheme order by using indexmap (tmp). 2024-09-11 22:09:29 +02:00
4lDO2 97f60de4ef WIP: Add getdents opaque_id 2024-09-11 22:09:29 +02:00
4lDO2 339271b4d7 Add getdents syscall, and switch schemes to it. 2024-09-11 22:09:26 +02:00
Kamil Koczurek 548fd63264 tsc: calculate elapsed ticks using saturating_sub
RDTSC readouts might not actually be monotonically increasing due to
desynchronization between CPU cores, so checked_sub was causing a kernel
panic.
2024-09-10 14:16:38 +02:00
4lDO2 652cdc7ef2 Replace repr(packed) with repr(C, packed). 2024-09-08 20:56:50 +02:00
4lDO2 5f9a587968 Convert repr(packed) to repr(C, packed). 2024-09-08 20:48:05 +02:00
4lDO2 815ac3da4a Revert "Fix possible UB in rmm::init."
This reverts commit 4626c74b78.
2024-09-08 20:22:46 +02:00
4lDO2 9673fa26b6 Expand Cargo features to separate lines.
This is much more diff- and by extension rebase-friendly.
2024-09-08 00:09:49 +02:00
4lDO2 4626c74b78 Fix possible UB in rmm::init.
I tested compiling the kernel with a more recent rustc, and this
triggered UB. Don't know for sure why there was an invalid entry passed
to the kernel, but it did.
2024-09-07 23:14:55 +02:00
Jeremy Soller 0c99e1bd0a Set xcr0 in all cases 2024-09-06 20:08:40 -06:00
Jeremy Soller 1c00450127 Use 64-bit versions of xsave and xrstor 2024-09-04 21:22:10 -06:00
4lDO2 09e7e66e00 Move scheme borrow unmap to cqe write. 2024-09-04 19:23:21 +02:00
4lDO2 181df19b24 Update rmm 2024-09-04 19:23:19 +02:00
Andrey Turkin a558860e88 Fix BSS sanity check
mark the canaries mutable so they go into data and bss and not in rodata
2024-09-04 10:55:20 +03:00
Andrey Turkin 7a9a5f024f Validate bootstrap memory allocation 2024-09-04 10:55:16 +03:00