4lDO2
6bf8238fb1
Unset procmask for kmain.
2024-03-16 17:49:30 +01:00
4lDO2
5ac0be7ec1
Start with full procmask, fix signal delivery.
2024-03-16 17:49:30 +01:00
4lDO2
5336cbd9e5
Improve signal interfaces and implementation.
2024-03-16 17:49:30 +01:00
bjorn3
b5f94a5a2e
Fix bug in the unmapping code
...
Previously trying to funmap an address after the start of the grant
would result in an overflow only caught when compiling the kernel with
debug assertions enabled.
2024-03-14 12:15:43 +01:00
4lDO2
ec58d6c541
Compile on aarch64 as well.
2024-03-05 10:40:54 +01:00
4lDO2
d38d8b66bd
Fix i686 compilation.
2024-03-05 10:26:57 +01:00
4lDO2
b35c9d1e62
Properly free phys-contiguous grants, TLB-delayed.
2024-03-04 19:03:01 +01:00
4lDO2
4e392d05e4
Delay cow() dealloc until after TLB shootdown.
2024-03-04 19:03:01 +01:00
4lDO2
fa3e2a24d4
Optimize TLB flushing.
2024-03-04 19:03:01 +01:00
4lDO2
716f147cd4
Fix synchronization so acid tlb succeeds!
2024-03-04 19:03:01 +01:00
4lDO2
846d914a55
Improve synchronization.
2024-03-04 19:03:01 +01:00
4lDO2
1f8d7bc67c
Always check shootdown reqs when locking addrsp.
2024-03-04 19:03:01 +01:00
4lDO2
3a592b9079
Use regular non-NMI IPIs for TLB shootdown.
2024-03-04 19:03:00 +01:00
4lDO2
3a915c7fd5
Fix lock/guard mismatch, move r#move to wrapper.
2024-03-04 19:03:00 +01:00
4lDO2
b5efaceb51
Fix more synchronization.
2024-03-04 19:03:00 +01:00
4lDO2
098cdd6067
Fix flusher, currently only with -smp 1
2024-03-04 19:03:00 +01:00
4lDO2
79381249a2
Implement a TLB shootdown draft.
2024-03-04 19:03:00 +01:00
4lDO2
6bf90f9eee
Build the foundation for TLB shootdown.
2024-03-04 19:03:00 +01:00
4lDO2
156017a25d
Refactor: wrap RwLock<AddrSpace>.
2024-03-04 19:03:00 +01:00
4lDO2
749df4c869
Fail successfully with todo!
2024-03-04 19:03:00 +01:00
4lDO2
bb30530ea0
Track which CPUs are using any given AddrSpace.
2024-03-04 19:03:00 +01:00
4lDO2
0c6c857012
Improve LogicalCpu{Id,Set}, make set atomic.
...
Technically there should be an atomic and nonatomic set type, but perf
should be the same, as the nonatomic one would only be used when setting
the sched_affinity.
2024-03-04 19:02:56 +01:00
bjorn3
24187b5f80
Move set_tss_stack call to switch_to
2024-02-25 20:10:49 +01:00
bjorn3
782ec87f27
Fix UB in the locking code of context switching
...
The spin crate considers it UB to call force_write_unlock while there is
a threads trying to obtain a read lock on the same rwlock.
This also switches to the spinning_lot crate for the context rwlock as
it has support for a write guard keeping a reference to the rwlock using
an Arc instead of a reference.
2024-02-25 17:07:41 +01:00
Jeremy Soller
6c6fc18f8e
Format
2024-02-16 21:40:42 -07:00
Jeremy Soller
86589aa7fa
Only switch to idle process when no other processes can run
2024-02-13 14:46:21 -07:00
Jeremy Soller
98f12fd750
Hack to workaround hangs by pinning to one cpu
2024-02-10 09:18:57 -07:00
Jeremy Soller
45f1c4e29e
Add rustfmt from relibc and apply it with cargo fmt
2024-01-17 13:52:01 -07:00
Jeremy Soller
d18c316012
Add session ID
2024-01-08 14:43:11 -07:00
4lDO2
ee3aafa1d9
Remove PhysBorrowed hacks.
2023-12-15 15:14:40 +01:00
4lDO2
d4a120188f
Ensure PhysBorrowed iff !alloc-owned, vice versa.
...
This is allowed now that the old physalloc/physfree syscalls have been
removed.
2023-12-15 15:14:40 +01:00
4lDO2
a42e406569
Fix contiguous mmap.
2023-12-15 15:14:40 +01:00
4lDO2
77400f63ee
Add a memory: file for phys-contiguous mmaps.
2023-12-15 15:14:36 +01:00
Jeremy Soller
1cc5804333
Allow CPUs to take any context
2023-12-13 17:20:43 -07:00
Jeremy Soller
4386e0716d
Missed change for last commit
2023-12-13 17:20:21 -07:00
Jeremy Soller
fbaa4306e3
Add unblock_no_ipi function and use in context switch
2023-12-13 17:19:43 -07:00
bjorn3
2d065083df
Use HashMap instead of BTreeMap where possible
...
This shrinks the kernel from 905840 bytes to 862408 bytes.
2023-12-13 19:55:20 +01:00
4lDO2
88508a2cb7
Remove as_user_inner.
2023-12-13 11:08:12 +01:00
4lDO2
679c26c03b
s/Arc<dyn KernelScheme>/enum, but deref as dyn.
2023-12-13 11:08:07 +01:00
bjorn3
a7165f822f
Switch from the memoffset crate to the offset_of feature
...
The memoffset crate requires const_refs_to_cell to work in const
contexts. This feature has some known issues around it's semantics. The
offset_of feature however is currently on track for stabilization.
2023-12-12 20:21:31 +00:00
bjorn3
017702d3d2
Remove a lot of dead code
2023-12-12 15:01:29 +00:00
4lDO2
036a4bdee4
Replace syscall::Scheme with KernelScheme.
2023-11-15 20:00:47 +01:00
Enver Balalic
750e566a27
Get aarch64 to compile
...
Fixes enough errors to get the kernel to compile
2023-10-01 23:55:24 +02:00
4lDO2
5eace9997a
Compile successfully on i686 as well.
2023-09-16 10:48:25 +02:00
4lDO2
dde8f78903
Support XSAVE, XSAVEOPT, and AVX2.
2023-09-14 10:54:30 +02:00
4lDO2
38e669c807
Dynamic fsgsbase support, enable by default.
2023-09-14 09:25:30 +02:00
4lDO2
f028b77412
Use config.toml instead of x86_* Cargo feature.
2023-09-12 21:19:06 +02:00
4lDO2
f025ece614
Replace from/into with get/new when necessary.
2023-09-06 08:38:10 +02:00
4lDO2
45d1c256ea
Add LogicalCpuSet as a sched affinity mask.
2023-09-04 21:57:54 +02:00
4lDO2
3b725b2c27
Add logical CPU ID newtype, switch to u32.
2023-09-04 21:27:48 +02:00