<p>Nico Huber has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28441">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mb/emulation/qemu x86: Use scratchpad for RAM size<br><br>Qemu communicates its RAM size through some bytes in CMOS. This works<br>fine as long as we don't try to use CMOS for configuration. If we do,<br>i.e. with CONFIG_USE_OPTION_TABLE enabled, these bytes would be erased<br>on boot (because of a checksum mismatch) even if we'd reserve them in<br>`cmos.layout`.<br><br>Instead of patching our option table implementation, we work around the<br>issue in Qemu's mainboard code: Before the option table is initialized,<br>we copy the RAM size to a scratchpad in the northbridge's PCI device.<br><br>Note: The scratchpad used is actually only for i440fx, but as there is<br>no real emulation of the northbridge, this works for q35 too.<br><br>Change-Id: I5d4a238feb252561ad2dac06c44b9398bf908105<br>Signed-off-by: Nico Huber <nico.huber@secunet.com><br>---<br>M src/mainboard/emulation/qemu-i440fx/Kconfig<br>M src/mainboard/emulation/qemu-i440fx/Makefile.inc<br>A src/mainboard/emulation/qemu-i440fx/bootblock.c<br>M src/mainboard/emulation/qemu-i440fx/memory.c<br>A src/mainboard/emulation/qemu-i440fx/memory.h<br>M src/mainboard/emulation/qemu-i440fx/northbridge.c<br>M src/mainboard/emulation/qemu-i440fx/romstage.c<br>M src/mainboard/emulation/qemu-q35/Makefile.inc<br>M src/mainboard/emulation/qemu-q35/bootblock.c<br>M src/mainboard/emulation/qemu-q35/romstage.c<br>10 files changed, 126 insertions(+), 35 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/41/28441/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/emulation/qemu-i440fx/Kconfig b/src/mainboard/emulation/qemu-i440fx/Kconfig</span><br><span>index fc56ab6..b779bbf 100644</span><br><span>--- a/src/mainboard/emulation/qemu-i440fx/Kconfig</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/Kconfig</span><br><span>@@ -21,6 +21,10 @@</span><br><span>     string</span><br><span>       default "QEMU x86 i440fx/piix4"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+config BOOTBLOCK_NORTHBRIDGE_INIT</span><br><span style="color: hsl(120, 100%, 40%);">+      string</span><br><span style="color: hsl(120, 100%, 40%);">+        default "mainboard/emulation/qemu-i440fx/bootblock.c"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> config IRQ_SLOT_COUNT</span><br><span>   int</span><br><span>  default 6</span><br><span>diff --git a/src/mainboard/emulation/qemu-i440fx/Makefile.inc b/src/mainboard/emulation/qemu-i440fx/Makefile.inc</span><br><span>index f9cf252..525b4c2 100644</span><br><span>--- a/src/mainboard/emulation/qemu-i440fx/Makefile.inc</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/Makefile.inc</span><br><span>@@ -1,3 +1,5 @@</span><br><span> cpu_incs-y += $(src)/mainboard/emulation/qemu-i440fx/cache_as_ram.inc</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += memory.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += memory.c</span><br><span> ramstage-y += northbridge.c</span><br><span> ramstage-y += fw_cfg.c</span><br><span>diff --git a/src/mainboard/emulation/qemu-i440fx/bootblock.c b/src/mainboard/emulation/qemu-i440fx/bootblock.c</span><br><span>new file mode 100644</span><br><span>index 0000000..e409cb3</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/bootblock.c</span><br><span>@@ -0,0 +1,37 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/io.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <pc80/mc146818rtc.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include "memory.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void bootblock_northbridge_init(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * We have to cache Qemu's RAM size (from CMOS) for the case</span><br><span style="color: hsl(120, 100%, 40%);">+       * that USE_OPTION_TABLE is enabled. We use a scratchpad in</span><br><span style="color: hsl(120, 100%, 40%);">+    * D0F0 for this.</span><br><span style="color: hsl(120, 100%, 40%);">+      */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned long tomk;</span><br><span style="color: hsl(120, 100%, 40%);">+   tomk = (unsigned long)cmos_read(HIGH_RAM_ADDR) << 14;</span><br><span style="color: hsl(120, 100%, 40%);">+   tomk |= (unsigned long)cmos_read(LOW_RAM_ADDR) << 6;</span><br><span style="color: hsl(120, 100%, 40%);">+    tomk += 16 * 1024;</span><br><span style="color: hsl(120, 100%, 40%);">+    pci_write_config32(PCI_DEV(0, 0x00, 0), QEMU_D0F0_SCRATCHPAD, tomk);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned long high;</span><br><span style="color: hsl(120, 100%, 40%);">+   high = (unsigned long)cmos_read(HIGH_HIGHRAM_ADDR) << 22;</span><br><span style="color: hsl(120, 100%, 40%);">+       high |= (unsigned long)cmos_read(MID_HIGHRAM_ADDR) << 14;</span><br><span style="color: hsl(120, 100%, 40%);">+       high |= (unsigned long)cmos_read(LOW_HIGHRAM_ADDR) << 6;</span><br><span style="color: hsl(120, 100%, 40%);">+        pci_write_config32(PCI_DEV(0, 0x00, 0), QEMU_D0F0_SCRATCHPAD + 4, high);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/mainboard/emulation/qemu-i440fx/memory.c b/src/mainboard/emulation/qemu-i440fx/memory.c</span><br><span>index b8109e5..12d9a96 100644</span><br><span>--- a/src/mainboard/emulation/qemu-i440fx/memory.c</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/memory.c</span><br><span>@@ -13,27 +13,34 @@</span><br><span>  * GNU General Public License for more details.</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/io.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <device/device.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <device/pci.h></span><br><span> #include <cbmem.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include "memory.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define CMOS_ADDR_PORT 0x70</span><br><span style="color: hsl(0, 100%, 40%);">-#define CMOS_DATA_PORT 0x71</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define HIGH_RAM_ADDR 0x35</span><br><span style="color: hsl(0, 100%, 40%);">-#define LOW_RAM_ADDR 0x34</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#define HIGH_HIGHRAM_ADDR 0x5d</span><br><span style="color: hsl(0, 100%, 40%);">-#define MID_HIGHRAM_ADDR 0x5c</span><br><span style="color: hsl(0, 100%, 40%);">-#define LOW_HIGHRAM_ADDR 0x5b</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static unsigned long qemu_get_memory_size(void)</span><br><span style="color: hsl(120, 100%, 40%);">+unsigned long qemu_get_memory_size(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- unsigned long tomk;</span><br><span style="color: hsl(0, 100%, 40%);">-     outb (HIGH_RAM_ADDR, CMOS_ADDR_PORT);</span><br><span style="color: hsl(0, 100%, 40%);">-   tomk = ((unsigned long) inb(CMOS_DATA_PORT)) << 14;</span><br><span style="color: hsl(0, 100%, 40%);">-       outb (LOW_RAM_ADDR, CMOS_ADDR_PORT);</span><br><span style="color: hsl(0, 100%, 40%);">-    tomk |= ((unsigned long) inb(CMOS_DATA_PORT)) << 6;</span><br><span style="color: hsl(0, 100%, 40%);">-       tomk += 16 * 1024;</span><br><span style="color: hsl(0, 100%, 40%);">-      return tomk;</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __SIMPLE_DEVICE__</span><br><span style="color: hsl(120, 100%, 40%);">+        const device_t d0f0 = PCI_DEV(0, 0x00, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span style="color: hsl(120, 100%, 40%);">+     struct device *const d0f0 = dev_find_slot(0, PCI_DEVFN(0x00, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!d0f0)</span><br><span style="color: hsl(120, 100%, 40%);">+            return 16 * 1024;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+     return pci_read_config32(d0f0, QEMU_D0F0_SCRATCHPAD);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+unsigned long qemu_get_high_memory_size(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __SIMPLE_DEVICE__</span><br><span style="color: hsl(120, 100%, 40%);">+        const device_t d0f0 = PCI_DEV(0, 0x00, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span style="color: hsl(120, 100%, 40%);">+     struct device *const d0f0 = dev_find_slot(0, PCI_DEVFN(0x00, 0));</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!d0f0)</span><br><span style="color: hsl(120, 100%, 40%);">+            return 16 * 1024;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+     return pci_read_config32(d0f0, QEMU_D0F0_SCRATCHPAD + 4);</span><br><span> }</span><br><span> </span><br><span> void *cbmem_top(void)</span><br><span>diff --git a/src/mainboard/emulation/qemu-i440fx/memory.h b/src/mainboard/emulation/qemu-i440fx/memory.h</span><br><span>new file mode 100644</span><br><span>index 0000000..753ef63</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/memory.h</span><br><span>@@ -0,0 +1,29 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef MAINBOARD_EMULATION_QEMU_I440FX_MEMORY_H</span><br><span style="color: hsl(120, 100%, 40%);">+#define MAINBOARD_EMULATION_QEMU_I440FX_MEMORY_H 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define HIGH_RAM_ADDR 0x35</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOW_RAM_ADDR 0x34</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define HIGH_HIGHRAM_ADDR 0x5d</span><br><span style="color: hsl(120, 100%, 40%);">+#define MID_HIGHRAM_ADDR 0x5c</span><br><span style="color: hsl(120, 100%, 40%);">+#define LOW_HIGHRAM_ADDR 0x5b</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define QEMU_D0F0_SCRATCHPAD 0xd0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+unsigned long qemu_get_memory_size(void);</span><br><span style="color: hsl(120, 100%, 40%);">+unsigned long qemu_get_high_memory_size(void);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span>diff --git a/src/mainboard/emulation/qemu-i440fx/northbridge.c b/src/mainboard/emulation/qemu-i440fx/northbridge.c</span><br><span>index aa309de..5711e72 100644</span><br><span>--- a/src/mainboard/emulation/qemu-i440fx/northbridge.c</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/northbridge.c</span><br><span>@@ -28,21 +28,9 @@</span><br><span> #include "fw_cfg.h"</span><br><span> #include "fw_cfg_if.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "memory.c"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "memory.h"</span><br><span> #include "acpi.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static unsigned long qemu_get_high_memory_size(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-  unsigned long high;</span><br><span style="color: hsl(0, 100%, 40%);">-     outb (HIGH_HIGHRAM_ADDR, CMOS_ADDR_PORT);</span><br><span style="color: hsl(0, 100%, 40%);">-       high = ((unsigned long) inb(CMOS_DATA_PORT)) << 22;</span><br><span style="color: hsl(0, 100%, 40%);">-       outb (MID_HIGHRAM_ADDR, CMOS_ADDR_PORT);</span><br><span style="color: hsl(0, 100%, 40%);">-        high |= ((unsigned long) inb(CMOS_DATA_PORT)) << 14;</span><br><span style="color: hsl(0, 100%, 40%);">-      outb (LOW_HIGHRAM_ADDR, CMOS_ADDR_PORT);</span><br><span style="color: hsl(0, 100%, 40%);">-        high |= ((unsigned long) inb(CMOS_DATA_PORT)) << 6;</span><br><span style="color: hsl(0, 100%, 40%);">-       return high;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static void qemu_reserve_ports(struct device *dev, unsigned int idx,</span><br><span>                               unsigned int base, unsigned int size,</span><br><span>                                const char *name)</span><br><span>diff --git a/src/mainboard/emulation/qemu-i440fx/romstage.c b/src/mainboard/emulation/qemu-i440fx/romstage.c</span><br><span>index ce12a8b..decd85f 100644</span><br><span>--- a/src/mainboard/emulation/qemu-i440fx/romstage.c</span><br><span>+++ b/src/mainboard/emulation/qemu-i440fx/romstage.c</span><br><span>@@ -24,8 +24,7 @@</span><br><span> #include <timestamp.h></span><br><span> #include <delay.h></span><br><span> #include <cpu/x86/lapic.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "memory.c"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <cbmem.h></span><br><span> </span><br><span> void *asmlinkage romstage_main(unsigned long bist)</span><br><span> {</span><br><span>diff --git a/src/mainboard/emulation/qemu-q35/Makefile.inc b/src/mainboard/emulation/qemu-q35/Makefile.inc</span><br><span>index fc4374c..cb85def 100644</span><br><span>--- a/src/mainboard/emulation/qemu-q35/Makefile.inc</span><br><span>+++ b/src/mainboard/emulation/qemu-q35/Makefile.inc</span><br><span>@@ -1,3 +1,5 @@</span><br><span> cpu_incs-y += $(src)/mainboard/emulation/qemu-i440fx/cache_as_ram.inc</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += ../qemu-i440fx/memory.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += ../qemu-i440fx/memory.c</span><br><span> ramstage-y += ../qemu-i440fx/northbridge.c</span><br><span> ramstage-y += ../qemu-i440fx/fw_cfg.c</span><br><span>diff --git a/src/mainboard/emulation/qemu-q35/bootblock.c b/src/mainboard/emulation/qemu-q35/bootblock.c</span><br><span>index 3625cf9..b190cfc 100644</span><br><span>--- a/src/mainboard/emulation/qemu-q35/bootblock.c</span><br><span>+++ b/src/mainboard/emulation/qemu-q35/bootblock.c</span><br><span>@@ -12,6 +12,8 @@</span><br><span>  */</span><br><span> </span><br><span> #include <arch/io.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <pc80/mc146818rtc.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include "../qemu-i440fx/memory.h"</span><br><span> </span><br><span> /* Just define these here, there is no gm35.h file to include. */</span><br><span> #define D0F0_PCIEXBAR_LO 0x60</span><br><span>@@ -37,6 +39,28 @@</span><br><span>         pci_io_write_config32(PCI_DEV(0,0,0), D0F0_PCIEXBAR_HI, reg);</span><br><span>        reg = CONFIG_MMCONF_BASE_ADDRESS | 1; /* 256MiB - 0-255 buses. */</span><br><span>    pci_io_write_config32(PCI_DEV(0,0,0), D0F0_PCIEXBAR_LO, reg);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * We have to cache Qemu's RAM size (from CMOS) for the case</span><br><span style="color: hsl(120, 100%, 40%);">+       * that USE_OPTION_TABLE is enabled. We use a scratchpad in</span><br><span style="color: hsl(120, 100%, 40%);">+    * D0F0 for this.</span><br><span style="color: hsl(120, 100%, 40%);">+      * Warning: This is actually a scratchpad address for I440FX,</span><br><span style="color: hsl(120, 100%, 40%);">+  * but it is not used in Qemu's emulated Q35. Although unlikely,</span><br><span style="color: hsl(120, 100%, 40%);">+   * this may break in the future. We could use an actual scratch-</span><br><span style="color: hsl(120, 100%, 40%);">+       * pad register (0xdc) but this is already used for timestamps</span><br><span style="color: hsl(120, 100%, 40%);">+         * in ICH9.</span><br><span style="color: hsl(120, 100%, 40%);">+    */</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned long tomk;</span><br><span style="color: hsl(120, 100%, 40%);">+   tomk = (unsigned long)cmos_read(HIGH_RAM_ADDR) << 14;</span><br><span style="color: hsl(120, 100%, 40%);">+   tomk |= (unsigned long)cmos_read(LOW_RAM_ADDR) << 6;</span><br><span style="color: hsl(120, 100%, 40%);">+    tomk += 16 * 1024;</span><br><span style="color: hsl(120, 100%, 40%);">+    pci_write_config32(PCI_DEV(0, 0x00, 0), QEMU_D0F0_SCRATCHPAD, tomk);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        unsigned long high;</span><br><span style="color: hsl(120, 100%, 40%);">+   high = (unsigned long)cmos_read(HIGH_HIGHRAM_ADDR) << 22;</span><br><span style="color: hsl(120, 100%, 40%);">+       high |= (unsigned long)cmos_read(MID_HIGHRAM_ADDR) << 14;</span><br><span style="color: hsl(120, 100%, 40%);">+       high |= (unsigned long)cmos_read(LOW_HIGHRAM_ADDR) << 6;</span><br><span style="color: hsl(120, 100%, 40%);">+        pci_write_config32(PCI_DEV(0, 0x00, 0), QEMU_D0F0_SCRATCHPAD + 4, high);</span><br><span> }</span><br><span> </span><br><span> static void bootblock_mainboard_init(void)</span><br><span>diff --git a/src/mainboard/emulation/qemu-q35/romstage.c b/src/mainboard/emulation/qemu-q35/romstage.c</span><br><span>index 870dd07..8f6a479 100644</span><br><span>--- a/src/mainboard/emulation/qemu-q35/romstage.c</span><br><span>+++ b/src/mainboard/emulation/qemu-q35/romstage.c</span><br><span>@@ -26,8 +26,7 @@</span><br><span> #include <timestamp.h></span><br><span> #include <delay.h></span><br><span> #include <cpu/x86/lapic.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "../qemu-i440fx/memory.c"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <cbmem.h></span><br><span> </span><br><span> void * asmlinkage romstage_main(unsigned long bist)</span><br><span> {</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28441">change 28441</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28441"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I5d4a238feb252561ad2dac06c44b9398bf908105 </div>
<div style="display:none"> Gerrit-Change-Number: 28441 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Nico Huber <nico.h@gmx.de> </div>