the following patch was just integrated into master:
commit 733b39aed4b12aa1e6ec5b4b7db9bb48ba88e015
Author: Hannah Williams <hannah.williams(a)intel.com>
Date: Thu Feb 11 13:46:28 2016 -0800
soc/apollolake: Prevent PMC BAR reassignment during resource allocation
Change-Id: Ie8e21e62ecd25f3c620a57c24948411c14c1e111
Signed-off-by: Hannah Williams <hannah.williams(a)intel.com>
Reviewed-on: https://review.coreboot.org/14315
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
See https://review.coreboot.org/14315 for details.
-gerrit
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14548
-gerrit
commit 84901350e69434f24206fe2fc932837845539f32
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Apr 29 12:34:01 2016 -0500
arch/x86/assembly_entry: allow early post CAR stages to use common code
The skylake-based Chromebooks use a separate verstage which runs
just after bootblock and prior to romstage. The normal path for
romstage would be to reload the gdt, however in the previously
described scenario has verstage performing that work. Therefore,
provide that path under those conditions. The only difference
from the C_ENVIRONMENT_BOOTBLOCK scenario is that the stack
should not be reloaded since there's no way to know the top
of the stack.
Change-Id: Ic39ab52a856233d3042ac02a15ae4816ddfe07c7
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/arch/x86/assembly_entry.S | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/src/arch/x86/assembly_entry.S b/src/arch/x86/assembly_entry.S
index ec3888f..86dbba4 100644
--- a/src/arch/x86/assembly_entry.S
+++ b/src/arch/x86/assembly_entry.S
@@ -14,21 +14,35 @@
* GNU General Public License for more details.
*/
-#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
+#include <rules.h>
/*
- * This path is for stages that post bootblock when employing
- * CONFIG_C_ENVIRONMENT_BOOTBLOCK. There's no need to re-load the gdt, etc
- * as all those settings are cached within the processor. In order to
- * continue with C code execution one needs to set stack pointer and clear
- * CAR_GLOBAL variables that are stage specific.
+ *Take the path where CAR_GLOBAL variables just need to be cleared when
+ * verstage runs directly after bootblock.
+ */
+#define ROMSTAGE_AFTER_VERSTAGE \
+ (IS_ENABLED(CONFIG_SEPARATE_VERSTAGE) && \
+ IS_ENABLED(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK) && ENV_ROMSTAGE)
+
+#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK) || ROMSTAGE_AFTER_VERSTAGE
+
+/*
+ * This path is for stages that are post bootblock when employing
+ * CONFIG_C_ENVIRONMENT_BOOTBLOCK or any intermediate stage succeeding
+ * the first stage to initialize protected mode. There's no need to re-load
+ * the gdt, etc as all those settings are cached within the processor. In
+ * order to continue with C code execution one needs to set stack pointer and
+ * clear CAR_GLOBAL variables that are stage specific.
*/
.section ".text._start", "ax", @progbits
.global _start
_start:
+/* _car_stack_end symbol is only valid when bootblock does CAR setup. */
+#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
/* reset stack pointer to CAR stack */
mov $_car_stack_end, %esp
+#endif
/* clear CAR_GLOBAL area as it is not shared */
cld
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14549
-gerrit
commit a1e7b970d303b90bc770bb7183551a84c454e8d6
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Apr 29 12:43:27 2016 -0500
drivers/intel/fsp1_1: fix linking romstage when SEPARATE_VERSTAGE used
The skylake-based Chromebooks use a separate verstage which runs
just after bootblock and prior to romstage. However, that
config is not enabled for coreboot.org so when
C_ENVIRONMENT_BOOTBLOCK changes were done it wasn't observed
that the Chromebook config failed because 2 _start symbols
were present. Remedy this failure by using the common
car_stage_entry symbol for taking over control flow.
Change-Id: I3f29b90ba8e3786b2106a34e49e6d1f9831dcc7c
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/drivers/intel/fsp1_1/romstage_after_verstage.S | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/src/drivers/intel/fsp1_1/romstage_after_verstage.S b/src/drivers/intel/fsp1_1/romstage_after_verstage.S
index 739db29..2a3372f 100644
--- a/src/drivers/intel/fsp1_1/romstage_after_verstage.S
+++ b/src/drivers/intel/fsp1_1/romstage_after_verstage.S
@@ -16,18 +16,8 @@
#define LHLT_DELAY 0x50000 /* I/O delay between post codes on failure */
.text
-.global _start
-_start:
- /* This is the romstage entry point when CONFIG_SEPARATE_VERSTAGE
- * is used. The stack, descriptors, and gdt are already initialized
- * by verstage. However, in order to maintain the semantics of
- * CAR_GLOBAL variables we need to clear those to zero. */
- cld
- xor %eax, %eax
- movl $(_car_global_end), %ecx
- movl $(_car_global_start), %edi
- sub %edi, %ecx
- rep stosl
+.global car_stage_entry
+car_stage_entry:
call romstage_after_verstage
#include "after_raminit.S"
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14549
-gerrit
commit 977e1825b7c52d91728299f3e296cee5c70a7507
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Apr 29 12:43:27 2016 -0500
drivers/intel/fsp1_1: fix linking romstage when SEPARATE_VERSTAGE used
The skylake-based Chromebooks use a separate verstage which runs
just after bootblock and prior to romstage. However, that
config is not enabled for coreboot.org so when
C_ENVIRONMENT_BOOTBLOCK changes were done it wasn't observed
that the Chromebook config failed because 2 _start symbols
were present. Reemdy this failure by using the common
car_stage_entry symbol for taking over control flow.
Change-Id: I3f29b90ba8e3786b2106a34e49e6d1f9831dcc7c
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/drivers/intel/fsp1_1/romstage_after_verstage.S | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/src/drivers/intel/fsp1_1/romstage_after_verstage.S b/src/drivers/intel/fsp1_1/romstage_after_verstage.S
index 739db29..2a3372f 100644
--- a/src/drivers/intel/fsp1_1/romstage_after_verstage.S
+++ b/src/drivers/intel/fsp1_1/romstage_after_verstage.S
@@ -16,18 +16,8 @@
#define LHLT_DELAY 0x50000 /* I/O delay between post codes on failure */
.text
-.global _start
-_start:
- /* This is the romstage entry point when CONFIG_SEPARATE_VERSTAGE
- * is used. The stack, descriptors, and gdt are already initialized
- * by verstage. However, in order to maintain the semantics of
- * CAR_GLOBAL variables we need to clear those to zero. */
- cld
- xor %eax, %eax
- movl $(_car_global_end), %ecx
- movl $(_car_global_start), %edi
- sub %edi, %ecx
- rep stosl
+.global car_stage_entry
+car_stage_entry:
call romstage_after_verstage
#include "after_raminit.S"
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14548
-gerrit
commit 3560ed70e30977f9f329fbcdc0747368f57b735c
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Apr 29 12:34:01 2016 -0500
arch/x86/assembly_entry: allow early post CAR stages to use common code
The skylake-based Chromebooks use a separate verstage which runs
just after bootblock and prior to romstage. The normal path for
romstage would be to reload the gdt, however in the previously
described scenario has verstage performing that work. Therefore,
provide that path under those conditions. The only difference
from the C_ENVIRONMENT_BOOTBLOCK scenario is that the stack
should not be reloaded since there's no way to know the top
of the stack.
Change-Id: Ic39ab52a856233d3042ac02a15ae4816ddfe07c7
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/arch/x86/assembly_entry.S | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/src/arch/x86/assembly_entry.S b/src/arch/x86/assembly_entry.S
index ec3888f..32640fa 100644
--- a/src/arch/x86/assembly_entry.S
+++ b/src/arch/x86/assembly_entry.S
@@ -14,21 +14,33 @@
* GNU General Public License for more details.
*/
-#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
+#include <rules.h>
+
+/* Take the path where CAR_GLOBAL variables just need to be cleared when
+ * verstage runs directly after bootblock. */
+#define ROMSTAGE_AFTER_VERSTAGE \
+ (IS_ENABLED(CONFIG_SEPARATE_VERSTAGE) && \
+ IS_ENABLED(CONFIG_VBOOT_STARTS_IN_BOOTBLOCK) && ENV_ROMSTAGE)
+
+#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK) || ROMSTAGE_AFTER_VERSTAGE
/*
- * This path is for stages that post bootblock when employing
- * CONFIG_C_ENVIRONMENT_BOOTBLOCK. There's no need to re-load the gdt, etc
- * as all those settings are cached within the processor. In order to
- * continue with C code execution one needs to set stack pointer and clear
- * CAR_GLOBAL variables that are stage specific.
+ * This path is for stages that are post bootblock when employing
+ * CONFIG_C_ENVIRONMENT_BOOTBLOCK or any intermediate stage succeeding
+ * the first stage to initialize protected mode. There's no need to re-load
+ * the gdt, etc as all those settings are cached within the processor. In
+ * order to continue with C code execution one needs to set stack pointer and
+ * clear CAR_GLOBAL variables that are stage specific.
*/
.section ".text._start", "ax", @progbits
.global _start
_start:
+/* _car_stack_end symbol is only valid when bootblock does CAR setup. */
+#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
/* reset stack pointer to CAR stack */
mov $_car_stack_end, %esp
+#endif
/* clear CAR_GLOBAL area as it is not shared */
cld
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14547
-gerrit
commit 29470ff72f075981d53f94374d730b5703bcb3d4
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Apr 29 12:10:28 2016 -0500
arch/x86/asembly_entry: reorder conditional stage entry macros
The path that just clears CAR_GLOBAL variables and jumps
to the stage entry point needs another condition for
separate verstage just after bootblock. However, the
current conditional is a negative conditional so
swap the logic around to make it easier to extend.
Change-Id: Iab6682498054715a6eaa0476390da6355238b9bc
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/arch/x86/assembly_entry.S | 44 ++++++++++++++++++++++---------------------
1 file changed, 23 insertions(+), 21 deletions(-)
diff --git a/src/arch/x86/assembly_entry.S b/src/arch/x86/assembly_entry.S
index 11babe1..ec3888f 100644
--- a/src/arch/x86/assembly_entry.S
+++ b/src/arch/x86/assembly_entry.S
@@ -14,29 +14,9 @@
* GNU General Public License for more details.
*/
-#if !IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
-
-/* This file assembles the start of the romstage program by the order of the
- * includes. Thus, it's extremely important that one pays very careful
- * attention to the order of the includes. */
-
-#include <arch/x86/prologue.inc>
-#include <cpu/x86/32bit/entry32.inc>
-#include <cpu/x86/fpu_enable.inc>
-#if IS_ENABLED(CONFIG_SSE)
-#include <cpu/x86/sse_enable.inc>
-#endif
+#if IS_ENABLED(CONFIG_C_ENVIRONMENT_BOOTBLOCK)
/*
- * The assembly.inc is generated based on the requirements of the mainboard.
- * For example, for ROMCC boards the MAINBOARDDIR/romstage.c would be
- * processed by ROMCC and added. In non-ROMCC boards the chipsets'
- * cache-as-ram setup files would be here.
- */
-#include <generated/assembly.inc>
-
-#else
-/*
* This path is for stages that post bootblock when employing
* CONFIG_C_ENVIRONMENT_BOOTBLOCK. There's no need to re-load the gdt, etc
* as all those settings are cached within the processor. In order to
@@ -65,4 +45,26 @@ _start:
car_stage_entry:
1:
jmp 1b
+
+#else
+
+/* This file assembles the start of the romstage program by the order of the
+ * includes. Thus, it's extremely important that one pays very careful
+ * attention to the order of the includes. */
+
+#include <arch/x86/prologue.inc>
+#include <cpu/x86/32bit/entry32.inc>
+#include <cpu/x86/fpu_enable.inc>
+#if IS_ENABLED(CONFIG_SSE)
+#include <cpu/x86/sse_enable.inc>
+#endif
+
+/*
+ * The assembly.inc is generated based on the requirements of the mainboard.
+ * For example, for ROMCC boards the MAINBOARDDIR/romstage.c would be
+ * processed by ROMCC and added. In non-ROMCC boards the chipsets'
+ * cache-as-ram setup files would be here.
+ */
+#include <generated/assembly.inc>
+
#endif
the following patch was just integrated into master:
commit 80a3df260767a6d9ad34b61572d483579c21476c
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Wed Apr 27 23:05:52 2016 -0500
soc/intel/apollolake: clarify Fast SPI CS2 pad configuration
The pad for CS2 of the Fast SPI interface needs to be configured for
automatic MMIO translation when a SPI TPM is utilized. Instead of
unconditionally configuring that pad under LPC_TPM provide a explicit
Kconfig for a mainboard to select.
Change-Id: Ia94b90e12d71a4b849359188a853f7e036cc583b
Signed-off-by: Aaron Durbin <adurbin(a)chormium.org>
Reviewed-on: https://review.coreboot.org/14531
Reviewed-by: Andrey Petrov <andrey.petrov(a)intel.com>
Tested-by: build bot (Jenkins)
See https://review.coreboot.org/14531 for details.
-gerrit