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
4lDO2
cbd02a8489
Set relocation-model=static
2023-08-12 00:57:45 +00:00
4lDO2
a78d6e42f8
Stop using #[thread_local] on x86_*.
2023-08-08 12:01:42 +02:00
4lDO2
bdd5c954dc
Move PIT_TICKS to context::switch.
2023-08-08 12:01:42 +02:00
4lDO2
8f98d5b987
Extend mremap, eager mappings for real hardware.
2023-08-03 12:37:58 +02:00
4lDO2
c7714992f3
Fix clone_grant_using_fmap test.
2023-08-02 14:17:26 +02:00
4lDO2
2070fa44b7
Fix warnings.
2023-08-02 13:07:49 +02:00
4lDO2
05a9530ac7
Temporarily disable CoW fmaps.
2023-08-01 17:29:36 +02:00
4lDO2
fe88b23d09
Use a single cow zeroed page for RO maps + eager mapping.
2023-08-01 13:11:00 +02:00