Martin Roth (martinroth(a)google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12630
-gerrit
commit 4663f2ed83885baac6b89565d4750d0025c38901
Author: Martin Roth <martinroth(a)google.com>
Date: Wed Dec 2 16:24:00 2015 -0700
Rangeley: Change A, A, A, A IRQ routing to A, A, A, B
Devices that have their IRQ routing set to A, A, A, A don't get
an IRQ value assigned because that series evaluates to 0. The
code that sets the IRQ values checks to make sure a value is set
by verifying that it's not 0. On Bay Trail, these are all
single-function graphics devices, so by changing one of the unused
IRQs from A to any other value, it assigns the values correctly.
This issue did not affect ACPI IRQ routing.
Change-Id: I4e6fe56084cbe86b309da15d61b296f1936458ec
Signed-off-by: Martin Roth <martinroth(a)google.com>
---
src/mainboard/intel/littleplains/irqroute.h | 6 +++---
src/mainboard/intel/mohonpeak/irqroute.h | 8 +++++---
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/mainboard/intel/littleplains/irqroute.h b/src/mainboard/intel/littleplains/irqroute.h
index 2f18345..5f0794a 100644
--- a/src/mainboard/intel/littleplains/irqroute.h
+++ b/src/mainboard/intel/littleplains/irqroute.h
@@ -41,12 +41,12 @@
PCI_DEV_PIRQ_ROUTE(PCIE_PORT4_DEV, H, G, F, E), \
PCI_DEV_PIRQ_ROUTE(IQAT_DEV, E, F, G, H), \
PCI_DEV_PIRQ_ROUTE(HOST_BRIDGE_DEV, H, A, A, A), \
- PCI_DEV_PIRQ_ROUTE(RCEC_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(RCEC_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(SMBUS1_DEV, B, A, A, A), \
PCI_DEV_PIRQ_ROUTE(GBE_DEV, C, D, E, F), \
PCI_DEV_PIRQ_ROUTE(USB2_DEV, G, A, A, A), \
PCI_DEV_PIRQ_ROUTE(SATA2_DEV, H, A, A, A), \
- PCI_DEV_PIRQ_ROUTE(SATA3_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(SATA3_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(PCU_DEV, H, G, B, C)
/*
@@ -66,4 +66,4 @@
PIRQ_PIC(G, 14), \
PIRQ_PIC(H, 15)
-#endif /* IRQROUTE_H */
\ No newline at end of file
+#endif /* IRQROUTE_H */
diff --git a/src/mainboard/intel/mohonpeak/irqroute.h b/src/mainboard/intel/mohonpeak/irqroute.h
index 2f18345..913ae52 100644
--- a/src/mainboard/intel/mohonpeak/irqroute.h
+++ b/src/mainboard/intel/mohonpeak/irqroute.h
@@ -34,6 +34,8 @@
* IR13h SATA3.0 INT(A) - PIRQ A
* IR1Fh LPC INT(ABCD) - PIRQ HGBC
*/
+
+ /* Devices set as A, A, A, A evaluate as 0, and don't get set */
#define PCI_DEV_PIRQ_ROUTES \
PCI_DEV_PIRQ_ROUTE(PCIE_PORT1_DEV, A, B, C, D), \
PCI_DEV_PIRQ_ROUTE(PCIE_PORT2_DEV, D, C, B, A), \
@@ -41,12 +43,12 @@
PCI_DEV_PIRQ_ROUTE(PCIE_PORT4_DEV, H, G, F, E), \
PCI_DEV_PIRQ_ROUTE(IQAT_DEV, E, F, G, H), \
PCI_DEV_PIRQ_ROUTE(HOST_BRIDGE_DEV, H, A, A, A), \
- PCI_DEV_PIRQ_ROUTE(RCEC_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(RCEC_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(SMBUS1_DEV, B, A, A, A), \
PCI_DEV_PIRQ_ROUTE(GBE_DEV, C, D, E, F), \
PCI_DEV_PIRQ_ROUTE(USB2_DEV, G, A, A, A), \
PCI_DEV_PIRQ_ROUTE(SATA2_DEV, H, A, A, A), \
- PCI_DEV_PIRQ_ROUTE(SATA3_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(SATA3_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(PCU_DEV, H, G, B, C)
/*
@@ -66,4 +68,4 @@
PIRQ_PIC(G, 14), \
PIRQ_PIC(H, 15)
-#endif /* IRQROUTE_H */
\ No newline at end of file
+#endif /* IRQROUTE_H */
Martin Roth (martinroth(a)google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12629
-gerrit
commit 34da6e70e209da9de1bd8a201562dcdc59778fa9
Author: Martin Roth <martinroth(a)google.com>
Date: Wed Dec 2 16:20:53 2015 -0700
fsp_baytrail: Change A, A, A, A IRQ routing to A, A, A, B
Devices that have their IRQ routing set to A, A, A, A don't get
an IRQ value assigned because that series evaluates to 0. The
code that sets the IRQ values checks to make sure a value is set
by verifying that it's not 0. On Bay Trail, these are all
single-function graphics devices, so by changing one of the unused
IRQs from A to any other value, it assigns the values correctly.
This issue did not affect ACPI IRQ routing.
Change-Id: I78866e3e0079435037e457a4fb04979254b56ee2
Signed-off-by: Martin Roth <martinroth(a)google.com>
---
src/mainboard/intel/bayleybay_fsp/irqroute.h | 3 ++-
src/mainboard/intel/minnowmax/irqroute.h | 3 ++-
src/mainboard/siemens/mc_tcu3/irqroute.h | 3 ++-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/mainboard/intel/bayleybay_fsp/irqroute.h b/src/mainboard/intel/bayleybay_fsp/irqroute.h
index e3523e9..8b6a46e 100644
--- a/src/mainboard/intel/bayleybay_fsp/irqroute.h
+++ b/src/mainboard/intel/bayleybay_fsp/irqroute.h
@@ -44,8 +44,9 @@
#define PCIE_BRIDGE_IRQ_ROUTES \
PCIE_BRIDGE_DEV(RP, BRIDGE1_DEV, E, F, G, H)
+/* Devices set as A, A, A, A evaluate as 0, and don't get set */
#define PCI_DEV_PIRQ_ROUTES \
- PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(EMMC_DEV, D, E, F, G), \
PCI_DEV_PIRQ_ROUTE(SDIO_DEV, B, A, A, A), \
PCI_DEV_PIRQ_ROUTE(SD_DEV, C, A, A, A), \
diff --git a/src/mainboard/intel/minnowmax/irqroute.h b/src/mainboard/intel/minnowmax/irqroute.h
index bdf3d94..4242acf 100644
--- a/src/mainboard/intel/minnowmax/irqroute.h
+++ b/src/mainboard/intel/minnowmax/irqroute.h
@@ -45,8 +45,9 @@
#define PCIE_BRIDGE_IRQ_ROUTES \
PCIE_BRIDGE_DEV(RP, BRIDGE1_DEV, E, F, G, H)
+/* Devices set as A, A, A, A evaluate as 0, and don't get set */
#define PCI_DEV_PIRQ_ROUTES \
- PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(EMMC_DEV, D, E, F, G), \
PCI_DEV_PIRQ_ROUTE(SDIO_DEV, B, A, A, A), \
PCI_DEV_PIRQ_ROUTE(SD_DEV, C, A, A, A), \
diff --git a/src/mainboard/siemens/mc_tcu3/irqroute.h b/src/mainboard/siemens/mc_tcu3/irqroute.h
index e3523e9..8b6a46e 100644
--- a/src/mainboard/siemens/mc_tcu3/irqroute.h
+++ b/src/mainboard/siemens/mc_tcu3/irqroute.h
@@ -44,8 +44,9 @@
#define PCIE_BRIDGE_IRQ_ROUTES \
PCIE_BRIDGE_DEV(RP, BRIDGE1_DEV, E, F, G, H)
+/* Devices set as A, A, A, A evaluate as 0, and don't get set */
#define PCI_DEV_PIRQ_ROUTES \
- PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, A), \
+ PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, B), \
PCI_DEV_PIRQ_ROUTE(EMMC_DEV, D, E, F, G), \
PCI_DEV_PIRQ_ROUTE(SDIO_DEV, B, A, A, A), \
PCI_DEV_PIRQ_ROUTE(SD_DEV, C, A, A, A), \
Timothy Pearson (tpearson(a)raptorengineeringinc.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12628
-gerrit
commit f0c6b62cf3c86d3d0a484b227c4c5b9b673e70f5
Author: Timothy Pearson <tpearson(a)raptorengineeringinc.com>
Date: Thu Nov 5 13:16:55 2015 -0600
mainboard/asus/kgpe-d16: Enable romstage spinlocks
Change-Id: Iac1adbeacdcded7faff2443b78a491cbb8a90fe8
Signed-off-by: Timothy Pearson <tpearson(a)raptorengineeringinc.com>
---
src/mainboard/asus/kgpe-d16/Kconfig | 1 +
src/mainboard/asus/kgpe-d16/romstage.c | 20 +++++++++++++++-----
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/mainboard/asus/kgpe-d16/Kconfig b/src/mainboard/asus/kgpe-d16/Kconfig
index c4f3962..67b43ca 100644
--- a/src/mainboard/asus/kgpe-d16/Kconfig
+++ b/src/mainboard/asus/kgpe-d16/Kconfig
@@ -14,6 +14,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
select SOUTHBRIDGE_AMD_SUBTYPE_SP5100
select SUPERIO_NUVOTON_NCT5572D
select PARALLEL_CPU_INIT
+ select HAVE_ROMSTAGE_CONSOLE_SPINLOCK
select HAVE_HARD_RESET
select HAVE_OPTION_TABLE
select HAVE_CMOS_DEFAULT
diff --git a/src/mainboard/asus/kgpe-d16/romstage.c b/src/mainboard/asus/kgpe-d16/romstage.c
index df76ab4..13eacd2 100644
--- a/src/mainboard/asus/kgpe-d16/romstage.c
+++ b/src/mainboard/asus/kgpe-d16/romstage.c
@@ -312,6 +312,18 @@ static void execute_memory_test(void)
}
#endif
+static spinlock_t printk_spinlock CAR_GLOBAL;
+
+spinlock_t* romstage_console_lock(void)
+{
+ return car_get_var_ptr(&printk_spinlock);
+}
+
+void initialize_romstage_console_lock(void)
+{
+ car_get_var(printk_spinlock) = SPIN_LOCK_UNLOCKED;
+}
+
void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
{
uint32_t esp;
@@ -338,6 +350,9 @@ void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
timestamp_init(timestamp_get());
timestamp_add_now(TS_START_ROMSTAGE);
+ /* Initialize the printk spinlock */
+ initialize_romstage_console_lock();
+
/* Nothing special needs to be done to find bus 0 */
/* Allow the HT devices to be found */
set_bsp_node_CHtExtNodeCfgEn();
@@ -407,11 +422,6 @@ void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx)
post_code(0x36);
/* Wait for all the APs core0 started by finalize_node_setup. */
- /* FIXME: A bunch of cores are going to start output to serial at once.
- * It would be nice to fix up prink spinlocks for ROM XIP mode.
- * I think it could be done by putting the spinlock flag in the cache
- * of the BSP located right after sysinfo.
- */
wait_all_core0_started();
/* run _early_setup before soft-reset. */