[coreboot-gerrit] Change in coreboot[master]: Documentation/Intel: Add MultiProcessorInit documentation

Subrata Banik (Code Review) gerrit at coreboot.org
Mon Apr 30 11:46:50 CEST 2018


Subrata Banik has uploaded this change for review. ( https://review.coreboot.org/25921


Change subject: Documentation/Intel: Add MultiProcessorInit documentation
......................................................................

Documentation/Intel: Add MultiProcessorInit documentation

Add documentation for MP service PPI using EFI interface
on Intel 9th Gen Platforms.

Documented so far:
* Problem Statement
* New Design Proposal
* API interface
* Code Flow changes
* Benefits

BRANCH=none
BUG=b:74436746
TEST=none

Change-Id: I5b6096ef31d8a523c00cbad39ab9d4884e735fde
Signed-off-by: Subrata Banik <subrata.banik at intel.com>
---
A Documentation/Intel/MultiProcessorInit/Coreboot_Publish_MP_Service_API.png
A Documentation/Intel/MultiProcessorInit/MultiProcessorInit.md
2 files changed, 74 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/21/25921/1

diff --git a/Documentation/Intel/MultiProcessorInit/Coreboot_Publish_MP_Service_API.png b/Documentation/Intel/MultiProcessorInit/Coreboot_Publish_MP_Service_API.png
new file mode 100644
index 0000000..5836140
--- /dev/null
+++ b/Documentation/Intel/MultiProcessorInit/Coreboot_Publish_MP_Service_API.png
Binary files differ
diff --git a/Documentation/Intel/MultiProcessorInit/MultiProcessorInit.md b/Documentation/Intel/MultiProcessorInit/MultiProcessorInit.md
new file mode 100644
index 0000000..6187631
--- /dev/null
+++ b/Documentation/Intel/MultiProcessorInit/MultiProcessorInit.md
@@ -0,0 +1,74 @@
+# Intel Common Code Block Publishing EFI_MP_SERVICES_PPI
+
+## Introduction
+
+This documentation is intended to document the purpose for creating EFI service
+Interface inside Coreboot space to perform CPU feature programming on Application
+Processors for Intel 9th Gen (Cannon Lake) and beyond CPUs.
+
+Today Coreboot is capable enough to handle multi-processor initialization on IA platforms.
+
+The multi-processor initialization code has to take care of lots of duties:
+
+1 Bringing all cores out of reset
+2 Load latest microcode on all cores
+3 Sync latest MTRR snapshot between BSP and APs
+4 Perform sets of CPU feature programming
+  * CPU Power & Thermal Management
+  * Overclocking
+  * Intel Trusted Execution Technology
+  * Intel Software Guard Extensions
+  * Intel Processor Trace etc.
+
+This above CPU feature programming lists are expected to grow with current and future
+CPU complexity and there might be some cases where certain feature programming mightbe
+closed source in nature.
+
+Platform code might need to compromise on those closed source nature of CPU programming
+if we don't plan to provide an alternate interface which can be used by Coreboot to
+get-rid of such close source CPU programming.
+
+## Proposal
+
+As Coreboot is doing CPU multi-processor initialization for IA platform before FSP-S
+initialization and having all possible information about cores in terms of maximum number
+of cores, APIC ids, stack size etc. It’s also possible for Coreboot to extend its own
+support model and create a sets of APIs which later can be used by FSP to run CPU feature
+programming using Coreboot published APIs.
+
+Due to the fact that FSP is using EFI infrastructure and need to relying on install/locate
+PPI to perform certain API call, hence Coreboot has to created MP services APIs known as 
+EFI_MP_SERVICES_PPI as per PI specification volume 1, section 8.3.9.
+More details here: http://www.uefi.org/sites/default/files/resources/PI_Spec_1_6.pdf
+
+### Coreboot to publish EFI_MP_SERVICES_PPI APIs
+| API                          | Description                                                      |
+|------------------------------|------------------------------------------------------------------|
+| PeiGetNumberOfProcessors     | Get the number of CPU's.                                         |
+| PeiGetProcessorInfo          | Get information on a specific CPU.                               |
+| PeiStartupAllAPs             | Activate all of the application processors.                      |
+| PeiStartupThisAP             | Activate a specific application processor.                       |
+| PeiSwitchBSP                 | Switch the boot strap processor.                                 |
+| PeiEnableDisableAP           | Enable or disable an application processor.                      |
+| PeiWhoAmI                    | Identify the currently executing processor.                      |
+|------------------------------|------------------------------------------------------------------|
+
+
+## Code Flow
+
+Here is proposed design flow with Coreboot has implemented EFI_MP_SERVICES_PPI API and FSP will make
+use of the same to perform some CPU feature programming.
+
+** Coreboot-FSP MP init flow **
+![alt text][Coreboot_Publish_MP_Service_API]
+
+[Coreboot_Publish_MP_Service_API]: Coreboot_Publish_MP_Service_API.png "Coreboot-FSP MP init flow"
+
+## Benefits
+1. Coreboot was using SkipMpInit=1 which will skip entire FSP CPU feature programming.
+With proposed model, Coreboot will make use of SkipMpInit=0 which will allow to run all
+Silicon recommended CPU programming.
+2. CPU feature programming inside FSP will be more transparent than before as it’s using
+Coreboot interfaces to execute those programming.
+3. Coreboot will have more control over running those feature programming as API optimization
+handled by Coreboot.

-- 
To view, visit https://review.coreboot.org/25921
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5b6096ef31d8a523c00cbad39ab9d4884e735fde
Gerrit-Change-Number: 25921
Gerrit-PatchSet: 1
Gerrit-Owner: Subrata Banik <subrata.banik at intel.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180430/3bd841e0/attachment-0001.html>


More information about the coreboot-gerrit mailing list