Loïc Grégoire
1569bc2b29
ke/smr: fix compile errors
2026-07-27 19:37:41 -04:00
Loïc Grégoire
9c48a5207c
ke/smr: expose simpler APIs
2026-07-26 20:41:01 -04:00
Loïc Grégoire
1dedb5dba1
tests: add tests
2026-07-24 19:56:25 -04:00
Loïc Grégoire
092616d1c2
ke/smr: make tracker struct smaller
2026-07-24 19:55:07 -04:00
Loïc Grégoire
2d8fc2a6f0
ke/sched: update priority in clock()
2026-07-24 19:50:58 -04:00
Loïc Grégoire
a969624f20
ke/smr: add support for preemptible SMR
2026-07-23 16:39:43 -04:00
Loïc Grégoire
e4621e03c1
ke/turnstile: add support for multiple owners
2026-07-23 16:38:59 -04:00
Loïc Grégoire
85b0ee5320
ke/sched: fix promotion path
...
Threads that get promoted should preempt the next thread if possible.
2026-07-23 16:37:30 -04:00
Loïc Grégoire
00ae1a21f2
rtl: add consts to List
2026-07-22 17:00:13 -04:00
Loïc Grégoire
5a30511866
ke/sched: fix priority formula
...
Hogs got promoted while other threads got demoted :(
2026-07-22 16:59:42 -04:00
Loïc Grégoire
8b92a302a2
mm/zone: remove slab coloring
...
This simplifies the code and fixes a race condition where the color
was read and updated without taking the zone lock in slab_create().
I don't think coloring is very useful these days anyway.
2026-07-20 20:46:00 -04:00
Loïc Grégoire
878be31c7a
ke/sched: fix lock inversion in scheduler
...
Taking next's lock can be a lock inversion with the turnstile code.
Use a switching field instead and spin on that.
2026-07-19 20:40:50 -04:00
Loïc Grégoire
ea33fcab30
mm/zone: add SMR zones
2026-07-19 16:51:22 -04:00
Loïc Grégoire
6284ba7824
ke/smr: add deferred advance
2026-07-19 16:28:09 -04:00
Loïc Grégoire
3ffca18054
ke: initial SMR implementation
2026-07-19 11:27:42 -04:00
Loïc Grégoire
a954844eca
rtl: add acq barrier
2026-07-19 11:27:33 -04:00
Loïc Grégoire
a2c2e833be
ex/work: dynamic thread spawning
2026-07-18 21:24:16 -04:00
Loïc Grégoire
c1043f224a
ex: rename workqueue to work
2026-07-18 16:48:03 -04:00
Loïc Grégoire
782196275b
mm+ke: make shootdowns use HandoffList
2026-07-18 16:45:32 -04:00
Loïc Grégoire
d21cefaf10
ke/spinlock: use std.atomic
2026-07-18 16:11:05 -04:00
Loïc Grégoire
fddd9865f7
ke/mutex: do TTAS spin
...
This is better to do than `pause`-ing in a CAS loop.
2026-07-18 16:08:34 -04:00
Loïc Grégoire
89259141bb
loader: pass cmdline (oops)
2026-07-18 14:42:54 -04:00
Loïc Grégoire
301946c774
all: use root boot info pointer
2026-07-18 14:41:30 -04:00
Loïc Grégoire
072239dc32
loader: detect CPU features
2026-07-18 14:37:30 -04:00
Loïc Grégoire
96d2bee857
loader: map pfndb and cleanup
2026-07-18 14:06:36 -04:00
Loïc Grégoire
3c72101228
rework entry point
2026-07-17 21:26:13 -04:00
Loïc Grégoire
a79c7a07cb
loader: initial loader code
2026-07-16 19:48:01 -04:00
Loïc Grégoire
26ec72fb36
ke: many scheduler improvements
...
Added:
- PELT
- Decaying CPU affinity
- Better load-balancing metrics overall
- Better comments
And refined overall scheduler behavior
2026-07-12 21:46:16 -04:00
Loïc Grégoire
f6dec9f334
rtl: fix LinkerSet on release builds
...
LLVM seemed to like doing DCE on those symbols, so export them to
ensure they are used. The `Tag` mess is because we need to generate
a unique symbol name, and the pointer cast is so we can export e.g zig
functions. This is messy.
2026-07-12 17:15:48 -04:00
Loïc Grégoire
2a38cd4f4d
ke/turnstile: fix a bunch of bugs
2026-07-08 12:46:18 -04:00
Loïc Grégoire
5fbc61ecb1
ke/mutex: fix possible use-after-free
...
A thread might get reaped between loading the owner and its state,
leading to a possible use-after-free.
2026-07-08 11:15:31 -04:00
Loïc Grégoire
898ceb171e
mm/zone: oops fix compile error
2026-07-05 20:24:47 -04:00
Loïc Grégoire
f416f3bf6c
mm/zone: pad CPUs to their own cache lines
2026-07-05 00:32:44 -04:00
Loïc Grégoire
ed7c449ad2
rtl: add CachePadded
2026-07-05 00:28:04 -04:00
Loïc Grégoire
79b96ed3dc
mm/zone: add hardening features
2026-07-04 23:43:57 -04:00
Loïc Grégoire
2d18761822
rtl: add LinkerSet
2026-07-04 22:50:15 -04:00
Loïc Grégoire
1647da3329
mm/zone: add tuning options
2026-07-04 18:17:38 -04:00
Loïc Grégoire
baf8516f34
ke: add tunables
2026-07-04 17:34:26 -04:00
Loïc Grégoire
e993ea711c
mm/zone: add drain
2026-07-03 23:32:18 -04:00
Loïc Grégoire
a5d42963ff
mm/zone: add dynamic depot resizing
2026-07-03 23:08:15 -04:00
Loïc Grégoire
881022f14d
mm/phys: calculate memory thresholds
2026-07-03 10:28:34 -04:00
Loïc Grégoire
d1787253c4
mm/zone: add magazine trimming
2026-07-03 10:28:17 -04:00
Loïc Grégoire
b559b8dbf7
pl(pc): fix overflow in deadline calculation
2026-07-03 10:27:41 -04:00
Loïc Grégoire
120b41c8ca
ex: add enqueue_in to workqueue
2026-07-03 10:27:29 -04:00
Loïc Grégoire
4a03a10d0c
everywhere: nuke UM
2026-07-02 20:01:12 -04:00
Loïc Grégoire
efe5df1567
mm: pmap overhaul
2026-07-01 13:02:39 -04:00
Loïc Grégoire
88d6fd10de
ke: don't signal log event if high IPL
2026-07-01 13:02:07 -04:00
Loïc Grégoire
415c2996a2
ex: clear workqueue enqueued field before running the function
2026-07-01 13:01:42 -04:00
Loïc Grégoire
85e6a8fec9
mm: make physical allocation blocking (WIP)
2026-06-29 22:33:43 -04:00
Loïc Grégoire
11c858c5e8
ke: add is_locked to mutex
2026-06-29 22:32:41 -04:00