diff options
author | Tom <tomut@yahoo.com> | 2020-07-06 07:27:22 -0600 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-07-06 17:07:44 +0200 |
commit | bc107d0b3311677de7bc084cbb75c21b166c8ad5 (patch) | |
tree | 586d1cfa189d72309f978122e15d112539feef61 /Kernel/Arch/i386/ProcessorInfo.h | |
parent | dec27e5e6fad25fedd9203087b8107242369dd2b (diff) | |
download | serenity-bc107d0b3311677de7bc084cbb75c21b166c8ad5.zip |
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.
Diffstat (limited to 'Kernel/Arch/i386/ProcessorInfo.h')
-rw-r--r-- | Kernel/Arch/i386/ProcessorInfo.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Kernel/Arch/i386/ProcessorInfo.h b/Kernel/Arch/i386/ProcessorInfo.h index 2ea9a19dbe..c74d74e607 100644 --- a/Kernel/Arch/i386/ProcessorInfo.h +++ b/Kernel/Arch/i386/ProcessorInfo.h @@ -42,6 +42,7 @@ class ProcessorInfo u32 m_display_family; u32 m_stepping; u32 m_type; + u32 m_apic_id; public: ProcessorInfo(Processor& processor); @@ -53,6 +54,9 @@ public: u32 display_family() const { return m_display_family; } u32 stepping() const { return m_stepping; } u32 type() const { return m_type; } + u32 apic_id() const { return m_apic_id; } + + void set_apic_id(u32 apic_id) { m_apic_id = apic_id; } }; } |