Commit Graph

214 Commits

Author SHA1 Message Date
Loïc Grégoire 02d2fb5144 ke/timer: make DPC parameter explicit 2026-08-01 22:43:32 -04:00
Loïc Grégoire 00d69c4a18 ex: add string interning 2026-08-01 19:11:31 -04:00
Loïc Grégoire f37ca349dd rcu/hashtable: make init take a struct 2026-08-01 19:11:08 -04:00
Loïc Grégoire 5bba618575 mm/zone: more SMR features 2026-08-01 19:10:26 -04:00
Loïc Grégoire 9394197e32 all: make memory model saner 2026-08-01 11:03:29 -04:00
Loïc Grégoire b9819487fa rcu/hashtable: more comments 2026-08-01 10:15:37 -04:00
Loïc Grégoire fe0f4ce4cd rcu: add hashtable 2026-08-01 10:07:24 -04:00
Loïc Grégoire 0f0ddffb2c ex: add DelayedWorkItem
Separate WorkItem from DelayedWorkItem so that the former doesn't pay
the price of a timer and a Dpc if it won't ever get delayed.
2026-08-01 09:53:17 -04:00
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 f9b2eeffb0 build: add arch module to docs 2026-07-12 18:16:49 -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