summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/emulation/qemu-q35/bootblock.c7
-rw-r--r--src/mainboard/emulation/qemu-q35/romstage.c14
2 files changed, 21 insertions, 0 deletions
diff --git a/src/mainboard/emulation/qemu-q35/bootblock.c b/src/mainboard/emulation/qemu-q35/bootblock.c
index 13550f7e3d..d5ca7f9ce7 100644
--- a/src/mainboard/emulation/qemu-q35/bootblock.c
+++ b/src/mainboard/emulation/qemu-q35/bootblock.c
@@ -14,6 +14,7 @@
#include <device/pci_ops.h>
#include <bootblock_common.h>
#include <southbridge/intel/i82801ix/i82801ix.h>
+#include <console/console.h>
/* Just define these here, there is no gm35.h file to include. */
#define D0F0_PCIEXBAR_LO 0x60
@@ -39,6 +40,12 @@ static void bootblock_northbridge_init(void)
pci_io_write_config32(PCI_DEV(0,0,0), D0F0_PCIEXBAR_HI, reg);
reg = CONFIG_MMCONF_BASE_ADDRESS | 1; /* 256MiB - 0-255 buses. */
pci_io_write_config32(PCI_DEV(0,0,0), D0F0_PCIEXBAR_LO, reg);
+
+ /* MCFG is now 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)");
}
static void enable_spi_prefetch(void)
diff --git a/src/mainboard/emulation/qemu-q35/romstage.c b/src/mainboard/emulation/qemu-q35/romstage.c
index e409ad1e5f..dbaead982a 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);