From 608f44306a6f0d5692f5c81bcbfe7a621ec254ba Mon Sep 17 00:00:00 2001 From: Kimplul Date: Fri, 5 Jul 2024 21:02:52 +0300 Subject: implement bkl + Start out using big kernel lock, apparently seL4 thinks its good enough. I might have a go at using a more fair lock, and possibly moving to more fine-grained locks if I really feel the need to get scalability up. --- src/main.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 506d7fe..33d9596 100644 --- a/src/main.c +++ b/src/main.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +61,8 @@ __noreturn void kernel(void *fdt, uintptr_t load_addr, struct vmem *d) /* we should be in kernelspace, so use the virtual address of our FDT. */ fdt = __va(fdt); + bkl_lock(); + /* dbg uses direct mapping at this point */ init_dbg(fdt); /* start up debugging in kernel IO */ @@ -101,6 +104,8 @@ __noreturn void main(unsigned long hart, void *fdt, uintptr_t load_addr) * have to get the function signature right */ (void)hart; + /** @todo some kind of lottery? */ + pm_t ram_base = __fdt_ram_base(fdt); pm_t ram_size = __fdt_ram_size(fdt); set_ram_base(ram_base); -- cgit v1.3