the following patch was just integrated into master:
commit 8c50e684415312b27b5ffe30164877460c2e7858
Author: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Date: Tue Dec 27 16:31:28 2016 +0100
Kconfig: Document what ASPM means
Change-Id: I57dd933ad70ffac95388d832bd5047f2225688e3
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Reviewed-on: https://review.coreboot.org/17973
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth(a)google.com>
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
See https://review.coreboot.org/17973 for details.
-gerrit
the following patch was just integrated into master:
commit 29d5be151c5a9f89483f0f193f05cd9d74342c1d
Author: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Date: Tue Dec 27 16:31:30 2016 +0100
payloads/external: Download FILO over HTTPS
Change-Id: I1b44e32505b96978849d39764ff399a502fa6e84
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Reviewed-on: https://review.coreboot.org/17972
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth(a)google.com>
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
See https://review.coreboot.org/17972 for details.
-gerrit
the following patch was just integrated into master:
commit b02e341b6f1451ed2bc6e04999831a9899a6f6bd
Author: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Date: Tue Dec 27 16:31:30 2016 +0100
payloads/external: Download iPXE over HTTPS
Change-Id: Ie4979ab8491ee821b39a273c5f354c445105d2a4
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer(a)gmx.net>
Reviewed-on: https://review.coreboot.org/17971
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth(a)google.com>
Reviewed-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
See https://review.coreboot.org/17971 for details.
-gerrit
Bora Guvendik (bora.guvendik(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17986
-gerrit
commit eaaf23b76c0b3c2657dfede852bf364417d22409
Author: Bora Guvendik <bora.guvendik(a)intel.com>
Date: Wed Dec 28 14:46:11 2016 -0800
WIP:cpu/x86: allow the number of APs to be specified for running
code in parallel to BSP.
Allow the number of APs,that will run a piece of code, to be specified.
In some cases, a single AP needs to run the code alone.
BUG=chrome-os-partner:56656
BRANCH=reef
TEST=None
Change-Id: I39d0210886428187cd7c6e75b3473dd5c733842c
Signed-off-by: Bora Guvendik <bora.guvendik(a)intel.com>
---
src/cpu/x86/mp_init.c | 22 ++++++++++++++++++----
src/include/cpu/x86/mp.h | 3 +++
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/src/cpu/x86/mp_init.c b/src/cpu/x86/mp_init.c
index c989963..57f670b 100644
--- a/src/cpu/x86/mp_init.c
+++ b/src/cpu/x86/mp_init.c
@@ -855,10 +855,11 @@ static void store_callback(mp_callback_t *slot, mp_callback_t value)
*(volatile mp_callback_t *)slot = value;
}
-static int run_ap_work(mp_callback_t func, long expire_us)
+static int run_ap_work(mp_callback_t func, long expire_us, int num_aps_needed)
{
int i;
int cpus_accepted;
+ int cpus_signaled = 0;
struct stopwatch sw;
int cur_cpu = cpu_index();
@@ -867,11 +868,17 @@ static int run_ap_work(mp_callback_t func, long expire_us)
return -1;
}
+ if ( num_aps_needed > ARRAY_SIZE(ap_callbacks) )
+ return -1;
+
/* Signal to all the APs to run the func. */
for (i = 0; i < ARRAY_SIZE(ap_callbacks); i++) {
if (cur_cpu == i)
continue;
store_callback(&ap_callbacks[i], func);
+ cpus_signaled++;
+ if ( cpus_signaled == num_aps_needed )
+ break;
}
mfence();
@@ -883,13 +890,15 @@ static int run_ap_work(mp_callback_t func, long expire_us)
continue;
if (read_callback(&ap_callbacks[i]) == NULL)
cpus_accepted++;
+ if ( cpus_accepted == num_aps_needed )
+ break;
}
- if (cpus_accepted == global_num_aps)
+ if (cpus_accepted == num_aps_needed)
return 0;
}
printk(BIOS_ERR, "AP call expired. %d/%d CPUs accepted.\n",
- cpus_accepted, global_num_aps);
+ cpus_accepted, num_aps_needed);
return -1;
}
@@ -916,7 +925,12 @@ static void ap_wait_for_instruction(void)
int mp_run_on_aps(void (*func)(void), long expire_us)
{
- return run_ap_work(func, expire_us);
+ return run_ap_work(func, expire_us, ARRAY_SIZE(ap_callbacks));
+}
+
+int mp_run_on_single_ap(void (*func)(void), long expire_us)
+{
+ return run_ap_work(func, expire_us, 1);
}
int mp_run_on_all_cpus(void (*func)(void), long expire_us)
diff --git a/src/include/cpu/x86/mp.h b/src/include/cpu/x86/mp.h
index b9b4d57..8220530 100644
--- a/src/include/cpu/x86/mp.h
+++ b/src/include/cpu/x86/mp.h
@@ -133,6 +133,9 @@ int mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops);
*/
int mp_run_on_aps(void (*func)(void), long expire_us);
+/* Like mp_run_on_aps() but runs func on only one ap */
+int mp_run_on_single_ap(void (*func)(void), long expire_us);
+
/* Like mp_run_on_aps() but also runs func on BSP. */
int mp_run_on_all_cpus(void (*func)(void), long expire_us);
Lee Leahy (leroy.p.leahy(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17985
-gerrit
commit e97e5b01d48c967dc592fdffe6e4440de4d2373c
Author: Lee Leahy <leroy.p.leahy(a)intel.com>
Date: Wed Dec 28 11:43:10 2016 -0800
soc/intel/quark: Add early debugging code
Add Kconfig values and early debugging code to better segment and debug
the early code in bootblock. Update the help text for the debug Kconfig
values to point to the various failure locations.
TEST=Build and run on Galileo Gen2
Change-Id: I1cd62eba3e9547cb1dd7f547aaec5d4827e14633
Signed-off-by: Lee Leahy <leroy.p.leahy(a)intel.com>
---
src/soc/intel/quark/Kconfig | 43 ++++++++++++++++++++++++++----
src/soc/intel/quark/bootblock/bootblock.c | 14 ++++++++++
src/soc/intel/quark/bootblock/esram_init.S | 21 +++++++++------
src/soc/intel/quark/romstage/fsp1_1.c | 4 +++
4 files changed, 69 insertions(+), 13 deletions(-)
diff --git a/src/soc/intel/quark/Kconfig b/src/soc/intel/quark/Kconfig
index 5a48847..1f82e9e 100644
--- a/src/soc/intel/quark/Kconfig
+++ b/src/soc/intel/quark/Kconfig
@@ -109,21 +109,54 @@ config ENABLE_DEBUG_LED_ESRAM
default n
select ENABLE_DEBUG_LED
help
- Indicate that ESRAM has been successfully initialized.
+ Indicate that ESRAM has been successfully initialized. If the SD LED
+ does not light then the ESRAM initialization needs to be debugged.
config ENABLE_DEBUG_LED_FINDFSP
bool "SD LED indicates fsp.bin file was found"
+ depends on PLATFORM_USES_FSP1_1
+ default n
+ select ENABLE_DEBUG_LED
+ help
+ Indicate that fsp.bin was found. If the SD LED does not light then
+ the code between ESRAM initialization through find_fsp needs to
+ debugged. Start by verifying that the correct fsp.bin is in the
+ image.
+
+config ENABLE_DEBUG_LED_BOOTBLOCK_ENTRY
+ bool "SD LED indicates bootblock.c was successful entered"
+ default n
+ select ENABLE_DEBUG_LED
+ help
+ Indicate that bootblock_c_entry was entered. If the SD LED does not
+ light then debug the code between ESRAM and bootblock_c_entry. For
+ FSP 1.1, use ENABLE_DEBUG_LED_FINDFSP to split this code.
+
+config ENABLE_DEBUG_LED_SOC_EARLY_INIT_ENTRY
+ bool "SD LED indicates bootblock_soc_early_init was successful entered"
+ default n
+ select ENABLE_DEBUG_LED
+ help
+ Indicate that bootblock_soc_early_init was entered. If the SD LED
+ does not light then debug the code in bootblock_main_with_timestamp
+
+config ENABLE_DEBUG_LED_SOC_EARLY_INIT_EXIT
+ bool "SD LED indicates bootblock_soc_early_init successful exited"
default n
select ENABLE_DEBUG_LED
help
- Indicate that fsp.bin was found.
+ Indicate that bootblock_soc_early_init exited. If the SD LED does not
+ light then debug the scripts in bootblock_soc_early_init.
-config ENABLE_DEBUG_LED_TEMPRAMINIT
- bool "SD LED indicates TempRamInit was successful"
+config ENABLE_DEBUG_LED_SOC_INIT_ENTRY
+ bool "SD LED indicates bootblock_soc_init was successful entered"
default n
select ENABLE_DEBUG_LED
help
- Indicate that TempRamInit was successful.
+ Indicate that bootblock_soc_init was entered. If the SD LED does not
+ light then debug the code in bootblock_mainboard_early_init and
+ console_init. If the SD LED does light but there is no serial then
+ debug the serial port configuration and initialization.
#####
# ESRAM layout
diff --git a/src/soc/intel/quark/bootblock/bootblock.c b/src/soc/intel/quark/bootblock/bootblock.c
index 3c90de9..c974cb1 100644
--- a/src/soc/intel/quark/bootblock/bootblock.c
+++ b/src/soc/intel/quark/bootblock/bootblock.c
@@ -22,6 +22,8 @@
#include <soc/pci_devs.h>
#include <soc/reg_access.h>
+extern void asmlinkage light_sd_led(void);
+
static const struct reg_script legacy_gpio_init[] = {
/* Temporarily enable the legacy GPIO controller */
REG_PCI_WRITE32(R_QNC_LPC_GBA_BASE, IO_ADDRESS_VALID
@@ -77,11 +79,17 @@ static const struct reg_script mtrr_init[] = {
void asmlinkage bootblock_c_entry(uint64_t base_timestamp)
{
+ if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_BOOTBLOCK_ENTRY))
+ light_sd_led();
+
bootblock_main_with_timestamp(base_timestamp);
}
void bootblock_soc_early_init(void)
{
+ if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_SOC_EARLY_INIT_ENTRY))
+ light_sd_led();
+
/* Initialize the MTRRs */
reg_script_run(mtrr_init);
@@ -94,10 +102,16 @@ void bootblock_soc_early_init(void)
reg_script_run_on_dev(HSUART0_BDF, hsuart_init);
if (IS_ENABLED(CONFIG_ENABLE_BUILTIN_HSUART1))
reg_script_run_on_dev(HSUART1_BDF, hsuart_init);
+
+ if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_SOC_EARLY_INIT_EXIT))
+ light_sd_led();
}
void bootblock_soc_init(void)
{
+ if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_SOC_INIT_ENTRY))
+ light_sd_led();
+
/* Display the MTRRs */
soc_display_mtrrs();
}
diff --git a/src/soc/intel/quark/bootblock/esram_init.S b/src/soc/intel/quark/bootblock/esram_init.S
index d982cdd..66f7093 100644
--- a/src/soc/intel/quark/bootblock/esram_init.S
+++ b/src/soc/intel/quark/bootblock/esram_init.S
@@ -507,14 +507,7 @@ L43:
L44:
#if IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_ESRAM)
- /* Turn on SD LED to indicate ESRAM successfully initialized */
- movl $SD_HOST_CTRL, %ebx
- movb 0(%ebx), %al
- orb $1, %al
- movb %al, 0(%ebx)
-
- /* Loop forever */
- jmp .
+ jmp light_sd_led
#endif /* CONFIG_ENABLE_DEBUG_LED_ESRAM */
#endif /* CONFIG_ENABLE_DEBUG_LED */
@@ -537,3 +530,15 @@ before_carstage:
call bootblock_c_entry
/* Never reached */
+
+ .global light_sd_led
+
+light_sd_led:
+ /* Turn on SD LED to indicate ESRAM successfully initialized */
+ movl $SD_HOST_CTRL, %ebx
+ movb 0(%ebx), %al
+ orb $1, %al
+ movb %al, 0(%ebx)
+
+ /* Loop forever */
+ jmp .
diff --git a/src/soc/intel/quark/romstage/fsp1_1.c b/src/soc/intel/quark/romstage/fsp1_1.c
index d7f19a7..e93e688 100644
--- a/src/soc/intel/quark/romstage/fsp1_1.c
+++ b/src/soc/intel/quark/romstage/fsp1_1.c
@@ -26,6 +26,8 @@
#include <soc/romstage.h>
#include <string.h>
+extern void asmlinkage light_sd_led(void);
+
asmlinkage void *car_stage_c_entry(void)
{
FSP_INFO_HEADER *fih;
@@ -40,6 +42,8 @@ asmlinkage void *car_stage_c_entry(void)
/* Locate the FSP header in ESRAM */
fih = find_fsp(CONFIG_FSP_ESRAM_LOC);
+ if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_FINDFSP))
+ light_sd_led();
/* Start the early verstage/romstage code */
post_code(0x2A);
Lee Leahy (leroy.p.leahy(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17984
-gerrit
commit f5d2f944e0ae974abdb2b24043e2397be11e8a29
Author: Lee Leahy <leroy.p.leahy(a)intel.com>
Date: Wed Dec 28 12:53:37 2016 -0800
soc/intel/quark: Fix serial port configuration
Fix serial port configuration broken by how PCI configuration space was
referenced introduced by change 3d15e10aef5811e8c7146e5defb0e36b848547ed
TEST=Build and run on Galileo Gen2
Change-Id: I2ab52cf598795e94f1f16977f8d12b7fdd95e146
Signed-off-by: Lee Leahy <leroy.p.leahy(a)intel.com>
---
src/soc/intel/quark/Kconfig | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/soc/intel/quark/Kconfig b/src/soc/intel/quark/Kconfig
index 33b3cf8..5a48847 100644
--- a/src/soc/intel/quark/Kconfig
+++ b/src/soc/intel/quark/Kconfig
@@ -29,6 +29,7 @@ config CPU_SPECIFIC_OPTIONS
select BOOTBLOCK_SAVE_BIST_AND_TIMESTAMP
select C_ENVIRONMENT_BOOTBLOCK
select HAVE_HARD_RESET
+ select NO_MMCONF_SUPPORT
select REG_SCRIPT
select RELOCATABLE_RAMSTAGE
select SOC_INTEL_COMMON
@@ -40,6 +41,10 @@ config CPU_SPECIFIC_OPTIONS
select UNCOMPRESSED_RAMSTAGE
select USE_MARCH_586
+config MMCOMF_SUPPORT_DEFAULT
+ bool
+ default n
+
#####
# Debug serial output
# The following options configure the debug serial port