-
Notifications
You must be signed in to change notification settings - Fork 344
Tasks UefiCpuPkg CpuDxe MP support
Enable multiprocessor support for IA32 & X64 within UefiCpuPkg/CpuDxe. (Implement MdePkg/Include/Protocol/MpService.h)
- Status: Complete ✔️
- Difficulty: Medium
- Language: Assembly, C
- Mentor:
- Suggested by: @jljusten
Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide, Part 1
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
Building: This project can be completed on any edk2 supported OS or toolchain.
Any assembly code should be ported to all assembly formats.
- OVMF: With QEMU you can use the -smp parameter to enable multiple processors
- DUET: With DUET you can run on a system with multiple threads/cores/processors
Some possible sub-goals for the driver
- Successfully start up other processor (Startup IPI)
-
Transition from 16-bit real to 32-bit flat mode(see ap-startup-example below) -
Transition from 16-bit real to 64-bit long mode(see ap-startup-example below) -
AP starts running CpuDxe code(see ap-startup-example below) - AP can run code requested by MpService protocol (StartupAllAPs/StartupThisAP)
- See StartCore below
- Support for remaining MpService protocol functions
Dynamically update ACPI tables in OVMF based on number of processors- Refer to "Software Developer's Manual" to research further initialization requirements.
- Code to start from: https://github.com/jljusten/edk2/tree/ap-startup-example
- This code already starts the APs. This should provide most assembly code needed for this task.
- Tested with QEMU/OVMF on Linux
- The StartCore project provides a sample program that uses the MpServices protocol
- EmulatorPkg already supports MpServices, so this may be used as a reference.
This project would be for an edk2 based driver, so please discuss the project on edk2-devel. For IRC, #edk2 on irc.oftc.net.
Home
Getting Started with EDK II
Build Instructions
EDK II Platforms
EDK II Documents
EDK II Release Planning
Reporting Issues
Reporting Security Issues
Community Information
Inclusive Language
Additional Projects & Tasks
Training
Community Support
Community Virtual Meetings
GHSA GitHub Security Advisories Proceess (Draft)