1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-10-13 16:42:08 +00:00
serenity/Kernel/Arch/x86/common
Andreas Kling ab5c422a29 Kernel/SMP: Make SMP message queueing work correctly
- Use the receiver's per-CPU entry in the message, instead of the
  sender's. (Using the sender's entry wasn't safe for broadcast
  messages since the same entry ended up on multiple message queues.)

- Retry the CAS until it *succeeds* instead of *fails*. This closes a
  race window, and also ensures a correct return value. The return value
  is used by the caller to decide whether to broadcast an IPI.
  This was the main reason smp=on was so slow. We had CPUs busy-waiting
  until someone else triggered an IPI and moved things along.

- Add a CPU pause hint to the spin loop. :^)
2021-08-09 11:46:31 +02:00
..
ASM_wrapper.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
CPU.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
Interrupts.cpp Kernel: Rename Process::space() => Process::address_space() 2021-08-06 14:05:58 +02:00
Processor.cpp Kernel/SMP: Make SMP message queueing work correctly 2021-08-09 11:46:31 +02:00
ProcessorInfo.cpp Kernel: Add stubs for missing x86_64 functionality 2021-06-24 09:27:13 +02:00
SafeMem.cpp Kernel: Add missing .globl definitions 2021-07-23 22:13:43 +02:00
TrapFrame.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00