]> rtime.felk.cvut.cz Git - jailhouse.git/commit
inmates: x86: Add basic SMP support
authorJan Kiszka <jan.kiszka@siemens.com>
Thu, 14 May 2015 14:26:52 +0000 (16:26 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Fri, 15 May 2015 07:14:00 +0000 (09:14 +0200)
commitef3b370c6433fc98de11b844a3d578b1e58b6c5b
tree4dddaf22ff8ed9765d17bb531348c606fee3bfa1
parent9a7c9a55ac56b0a29d3f9da027b82207fd906681
inmates: x86: Add basic SMP support

Under Jailhouse, all the cell CPUs are started in parallel. To enable
SMP inmates, the entry code records their number and their APIC IDs (up
to the current limit of 255). Only the first CPU arriving at the entry
check will call inmate_main, the others are parked in halt state.

Inmates can use the recorded parameters to pick up all CPUs by sending
them regular INIT/SIPI signals. We use the entry path for this case as
well: ap_entry is introduced as an alternative entry function pointer.
If it is non-NULL, the CPU will bypass the SMP startup procedure and
call that function.

The library is extended to provide a boot-up barrier and a single-CPU
wakeup service. It also adds a simple IPI service.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
inmates/lib/x86/Makefile
inmates/lib/x86/header-32.S
inmates/lib/x86/header.S
inmates/lib/x86/inmate.h
inmates/lib/x86/int.c
inmates/lib/x86/smp.c [new file with mode: 0644]