summaryrefslogtreecommitdiffstats
path: root/src/mainboard/emulation/qemu-q35/romstage.c
diff options
context:
space:
mode:
authorPatrick Rudolph <siro@das-labor.org>2019-02-14 19:47:03 +0100
committerMartin Roth <martinroth@google.com>2019-07-08 14:50:12 +0000
commitfbdeb4af75d022c237ff48cb3021451d7e8c5328 (patch)
treef05a6495a02add10f83b30c648a6ae2db329e6c4 /src/mainboard/emulation/qemu-q35/romstage.c
parent26210fa040b4f2e987560a65fd3b4f822de670a3 (diff)
downloadcoreboot-fbdeb4af75d022c237ff48cb3021451d7e8c5328.tar.gz
coreboot-fbdeb4af75d022c237ff48cb3021451d7e8c5328.tar.bz2
coreboot-fbdeb4af75d022c237ff48cb3021451d7e8c5328.zip
qemu-q35: die if started on wrong machine
The QEMU machine "PC" doesn't support MCFG. Die after console init if the user selected the wrong qemu machine and print a message to use the correct machine type. Without this patch ramstage dies with non-helpful message: "get_pbus: dev is NULL!" Change-Id: I9d1b24176de971c5f827091bc5bc1bac8426f3f6 Signed-off-by: Patrick Rudolph <siro@das-labor.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/31425 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src/mainboard/emulation/qemu-q35/romstage.c')
-rw-r--r--src/mainboard/emulation/qemu-q35/romstage.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mainboard/emulation/qemu-q35/romstage.c b/src/mainboard/emulation/qemu-q35/romstage.c
index e409ad1e5fae..dbaead982af0 100644
--- a/src/mainboard/emulation/qemu-q35/romstage.c
+++ b/src/mainboard/emulation/qemu-q35/romstage.c
@@ -22,6 +22,18 @@
#include <timestamp.h>
#include <southbridge/intel/i82801ix/i82801ix.h>
#include <program_loading.h>
+#include <device/pci_ops.h>
+
+#define D0F0_PCIEXBAR_LO 0x60
+
+static void mainboard_machine_check(void)
+{
+ /* Check that MCFG is active. If it's not qemu was started for machine PC */
+ if (!CONFIG(BOOTBLOCK_CONSOLE) &&
+ (pci_read_config32(PCI_DEV(0, 0, 0), D0F0_PCIEXBAR_LO) !=
+ (CONFIG_MMCONF_BASE_ADDRESS | 1)))
+ die("You must run qemu for machine Q35 (-M q35)");
+}
asmlinkage void car_stage_entry(void)
{
@@ -29,6 +41,8 @@ asmlinkage void car_stage_entry(void)
i82801ix_early_init();
console_init();
+ mainboard_machine_check();
+
cbmem_recovery(0);
timestamp_add_now(TS_START_ROMSTAGE);