ladybird/Kernel
Tom bc107d0b33 Kernel: Add SMP IPI support
We can now properly initialize all processors without
crashing by sending SMP IPI messages to synchronize memory
between processors.

We now initialize the APs once we have the scheduler running.
This is so that we can process IPI messages from the other
cores.

Also rework interrupt handling a bit so that it's more of a
1:1 mapping. We need to allocate non-sharable interrupts for
IPIs.

This also fixes the occasional hang/crash because all
CPUs now synchronize memory with each other.
2020-07-06 17:07:44 +02:00
..
ACPI Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
API Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
Arch Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Devices Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
FileSystem Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Heap Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Interrupts Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Modules Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
Net Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
PCI Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Tasks Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
Time Kernel: Use map_typed() in HPET code and add a register access helper 2020-06-21 00:58:55 +02:00
TTY Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
VM Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
.gitignore Meta: Removed all gitignore in the source tree only keeping the root one 2019-06-30 10:41:26 +02:00
Assertions.h Kernel: List all CPUs in /proc/cpuinfo 2020-07-01 12:07:01 +02:00
CMakeLists.txt Kernel: Add Plan9FS :^) 2020-07-05 12:26:27 +02:00
CMOS.cpp Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
CMOS.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
CommandLine.cpp Kernel: Remove CommandLine::get() in favor of lookup() 2020-04-18 14:22:42 +02:00
CommandLine.h Kernel: Remove CommandLine::get() in favor of lookup() 2020-04-18 14:22:42 +02:00
Console.cpp Kernel: Protect Console with SpinLock 2020-07-01 12:07:01 +02:00
Console.h Kernel: Port VirtualConsole to LibVT :^) 2020-05-27 11:19:38 +02:00
DoubleBuffer.cpp AK: Reduce header dependency graph of String.h 2020-03-23 13:48:44 +01:00
DoubleBuffer.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
Forward.h Kernel: Implement software context switching and Processor structure 2020-07-01 12:07:01 +02:00
init.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
IO.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
KBuffer.h AK: Reduce header dependency graph of String.h 2020-03-23 13:48:44 +01:00
KBufferBuilder.cpp Kernel: Fix KBufferBuilder::append() 2020-07-05 12:26:27 +02:00
KBufferBuilder.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
kprintf.cpp Kernel: Allow recursion when writing to the debug log 2020-07-03 19:32:34 +02:00
KResult.h Kernel: Always inline some KResult / KResultOr<> methods 2020-06-02 21:49:47 +02:00
kstdio.h Kernel: Remove awkward "#define printf dbgprintf" 2020-05-16 12:03:25 +02:00
KSyms.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
KSyms.h Kernel: Update cryptically-named functions related to symbolication 2020-04-08 17:19:46 +02:00
linker.ld Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
Lock.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Lock.h AK: Add ALWAYS_INLINE, NEVER_INLINE and FLATTEN macros 2020-04-30 11:43:25 +02:00
mkmap.sh Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
Module.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
Multiboot.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
PerformanceEventBuffer.cpp Kernel: Turn Thread::current and Process::current into functions 2020-07-01 12:07:01 +02:00
PerformanceEventBuffer.h AK: Add global FlatPtr typedef. It's u32 or u64, based on sizeof(void*) 2020-03-08 13:06:51 +01:00
PhysicalAddress.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
Process.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Process.h Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
Profiling.cpp LibELF: Move ELF classes into namespace ELF 2020-04-11 22:41:05 +02:00
Profiling.h Kernel: Bump the max stack frame count in sample profiles to 50 2020-04-12 11:00:38 +02:00
Ptrace.cpp Kernel: Turn Thread::current and Process::current into functions 2020-07-01 12:07:01 +02:00
Ptrace.h Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
Random.cpp Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
Random.h Kernel: Make Random work on CPUs without rdrand 2020-06-27 19:40:33 +02:00
RTC.cpp Kernel: Fix awkward RTC log message at boot 2020-04-08 17:19:46 +02:00
RTC.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
Scheduler.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Scheduler.h Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
SharedBuffer.cpp AK: Make Vector::unstable_remove() return the removed value 2020-07-05 12:26:27 +02:00
SharedBuffer.h Kernel: Tidy up SharedBuffer interface 2020-05-16 09:44:00 +02:00
SpinLock.h Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
StdLib.cpp Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
StdLib.h Kernel: Dont't static_assert that size_t is 32-bit :^) 2020-05-23 15:25:43 +02:00
Syscall.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
Thread.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Thread.h Kernel: Enhance WaitQueue to remember pending wakes 2020-07-06 10:00:24 +02:00
ThreadTracer.cpp ptrace: Add PT_SETREGS 2020-04-13 00:53:22 +02:00
ThreadTracer.h Debugger: Add DebugSession 2020-04-13 00:53:22 +02:00
TimerQueue.cpp Kernel: Update TimerQueue next due timer only when necessary 2020-04-27 11:24:21 +02:00
TimerQueue.h Kernel: Expose timers via a TimerId type 2020-04-27 11:14:41 +02:00
UnixTypes.h Kernel: Change the value of SO_KEEPALIVE to reflect LibC's constant 2020-07-04 10:49:36 +02:00
VirtualAddress.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
WaitQueue.cpp Kernel: Enhance WaitQueue to remember pending wakes 2020-07-06 10:00:24 +02:00
WaitQueue.h Kernel: Enhance WaitQueue to remember pending wakes 2020-07-06 10:00:24 +02:00