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(a)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(a)intel.com>
Martin Roth has uploaded a new patch set (#2). ( https://review.coreboot.org/25916 )
Change subject: chromeec platforms: Update ACPI thermal event handler call
......................................................................
chromeec platforms: Update ACPI thermal event handler call
Currently the thermal event handler method TEVT is defined as an extern,
then defined again in platforms with thermal event handling. In newer
versions of IASL, this generates an error, as the method is defined in
two places. Simply removing the extern causes the call to it to fail on
platforms where it isn't actually defined, so add a preprocessor define
where it's implemented, and only call the method on those platforms.
Change-Id: I64dcd2918d14f75ad3c356b321250bfa9d92c8a5
Signed-off-by: Martin Roth <martinroth(a)google.com>
---
M src/ec/google/chromeec/acpi/ec.asl
M src/mainboard/google/cyan/variants/terra/include/variant/acpi/thermal.asl
M src/soc/intel/baytrail/acpi/dptf/thermal.asl
M src/soc/intel/braswell/acpi/dptf/thermal.asl
M src/soc/intel/common/acpi/dptf/thermal.asl
M src/soc/intel/skylake/acpi/dptf/thermal.asl
6 files changed, 8 insertions(+), 4 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/16/25916/2
--
To view, visit https://review.coreboot.org/25916
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I64dcd2918d14f75ad3c356b321250bfa9d92c8a5
Gerrit-Change-Number: 25916
Gerrit-PatchSet: 2
Gerrit-Owner: Martin Roth <martinroth(a)google.com>
Matthias Gazzari has uploaded this change for review. ( https://review.coreboot.org/25914
Change subject: Fix freeze during chipset lockdown on Nehalem
......................................................................
Fix freeze during chipset lockdown on Nehalem
Remove locking of PCI device 00:00.0 registers (nehalem/finalize.c)
and remove setting the zeroth bit of the MSR_LT_LOCK_MEMORY = 0x2e7 MSR
register (model_2065x/finalize.c) to fix a frozen boot and S3 resume issue
which became apparent with commit d533b16669a3bacb19b2824e6b4bc76a2a18c92a.
More detailed, either setting the LSB of the 32 bit register at 0x98
of the PCI device 00:00.0 (in the intel_nehalem_finalize_smm function) or
setting the LSB of the the MSR register MSR_LT_LOCK_MEMORY = 0x2e7 (in the
intel_model_2065x_finalize_smm function) indepentenly causes a freeze
during bootup or a complete session loss on resuming from S3 as described
here: https://mail.coreboot.org/pipermail/coreboot/2018-April/086564.html
It seems like Nehalem CPUs do not have a MSR_LT_LOCK_MEMORY register.
Additionally, the "Intel Core i7-600, i5-500, i5-400 and i3-300 Mobile
Processor Series, Datasheet Volume Two" indicates that registers of the
PCI device 00:00.0 cannot be locked manually. Instead, they can only be
locked by TXT, VT-d, CMD.LOCK.MEMCONFIG, ME_SM_LOCK or D_LCK.
Finally, the addresses and sizes of these registers were partially wrong.
Tested on Lenovo X201i with a Core i3 330M (no AES-NI, no VT-d and no TXT
support compared to the Core i5 and Core i7 processors of a X201).
Change-Id: I9d568d5c05807ebf7e131b3e5be8e5445476d61b
Signed-off-by: Matthias Gazzari <mail(a)qtux.eu>
---
M src/cpu/intel/model_2065x/finalize.c
M src/cpu/intel/model_2065x/model_2065x.h
M src/northbridge/intel/nehalem/finalize.c
3 files changed, 0 insertions(+), 16 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/14/25914/1
diff --git a/src/cpu/intel/model_2065x/finalize.c b/src/cpu/intel/model_2065x/finalize.c
index 50e00bf..5e7b3d8 100644
--- a/src/cpu/intel/model_2065x/finalize.c
+++ b/src/cpu/intel/model_2065x/finalize.c
@@ -54,7 +54,4 @@
/* Lock TM interupts - route thermal events to all processors */
msr_set_bit(MSR_MISC_PWR_MGMT, 22);
-
- /* Lock memory configuration to protect SMM */
- msr_set_bit(MSR_LT_LOCK_MEMORY, 0);
}
diff --git a/src/cpu/intel/model_2065x/model_2065x.h b/src/cpu/intel/model_2065x/model_2065x.h
index 8bb3b87..f87ba77 100644
--- a/src/cpu/intel/model_2065x/model_2065x.h
+++ b/src/cpu/intel/model_2065x/model_2065x.h
@@ -39,7 +39,6 @@
#define ENERGY_POLICY_NORMAL 6
#define ENERGY_POLICY_POWERSAVE 15
#define IA32_PACKAGE_THERM_INTERRUPT 0x1b2
-#define MSR_LT_LOCK_MEMORY 0x2e7
#define IA32_MC0_STATUS 0x401
#define MSR_PIC_MSG_CONTROL 0x2e
diff --git a/src/northbridge/intel/nehalem/finalize.c b/src/northbridge/intel/nehalem/finalize.c
index f90f937..7313840 100644
--- a/src/northbridge/intel/nehalem/finalize.c
+++ b/src/northbridge/intel/nehalem/finalize.c
@@ -23,18 +23,6 @@
void intel_nehalem_finalize_smm(void)
{
- pci_or_config16(PCI_DEV_SNB, 0x50, 1 << 0); /* GGC */
- pci_or_config32(PCI_DEV_SNB, 0x5c, 1 << 0); /* DPR */
- pci_or_config32(PCI_DEV_SNB, 0x78, 1 << 10); /* ME */
- pci_or_config32(PCI_DEV_SNB, 0x90, 1 << 0); /* REMAPBASE */
- pci_or_config32(PCI_DEV_SNB, 0x98, 1 << 0); /* REMAPLIMIT */
- pci_or_config32(PCI_DEV_SNB, 0xa0, 1 << 0); /* TOM */
- pci_or_config32(PCI_DEV_SNB, 0xa8, 1 << 0); /* TOUUD */
- pci_or_config32(PCI_DEV_SNB, 0xb0, 1 << 0); /* BDSM */
- pci_or_config32(PCI_DEV_SNB, 0xb4, 1 << 0); /* BGSM */
- pci_or_config32(PCI_DEV_SNB, 0xb8, 1 << 0); /* TSEGMB */
- pci_or_config32(PCI_DEV_SNB, 0xbc, 1 << 0); /* TOLUD */
-
MCHBAR32_OR(0x5500, 1 << 0); /* PAVP */
MCHBAR32_OR(0x5f00, 1 << 31); /* SA PM */
MCHBAR32_OR(0x6020, 1 << 0); /* UMA GFX */
--
To view, visit https://review.coreboot.org/25914
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: I9d568d5c05807ebf7e131b3e5be8e5445476d61b
Gerrit-Change-Number: 25914
Gerrit-PatchSet: 1
Gerrit-Owner: Matthias Gazzari <mail(a)qtux.eu>