[SeaBIOS] [PATCHv2 0/6] Improved multi-platform support
David Woodhouse
dwmw2 at infradead.org
Mon Feb 11 11:54:28 CET 2013
On Sat, 2013-02-09 at 14:08 -0500, Kevin O'Connor wrote:
> This patch series is less ambitious than the previous - SeaBIOS can't
> be compiled for multiple platforms (eg, QEMU, CSM, coreboot) at the
> same time.
Out of interest, why not include Xen in that list? Do we gain any real
benefit from building a multi-platform binary that can be used both
natively under qemu *and* from Xen?
Thoroughly untested patch on top of your series at
git://github.com/KevinOConnor/seabios.git test-20130209
How would I go about testing this myself? And should CONFIG_XEN select
CONFIG_QEMU_HARDWARE, as CONFIG_QEMU does? There a no users of
runningOnXen() now, so perhaps that can be removed too?
By losing some of the runtime tests and making them purely config-based,
the image size for Xen drops from 139KiB to 116KiB. And that's with
MTRR, SMM and all the bios tables turned off in the config.
commit eff724e682ce557cd9d4a09d7892cb28950bb886
Author: David Woodhouse <David.Woodhouse at intel.com>
Date: Mon Feb 11 10:47:47 2013 +0000
Make Xen one of the top-level build target choices
Signed-off-by: David Woodhouse <David.Woodhouse at intel.com>
diff --git a/src/Kconfig b/src/Kconfig
index 6dbea79..f5dab76 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -14,10 +14,10 @@ choice
Configure as a coreboot payload.
config QEMU
- bool "Build for QEMU/Xen/KVM/Bochs"
+ bool "Build for QEMU/KVM/Bochs"
select QEMU_HARDWARE
help
- Configure for an emulated machine (QEMU, Xen, KVM, or Bochs).
+ Configure for an emulated machine (QEMU, KVM, or Bochs).
config CSM
bool "Build as Compatibilty Support Module for EFI BIOS"
@@ -25,6 +25,11 @@ choice
Configure to be used by EFI firmware as Compatibility Support
module (CSM) to provide legacy BIOS services.
+ config XEN
+ bool "Build for Xen HVM"
+ help
+ Configure to be used by xen hvmloader, for a HVM guest.
+
endchoice
config QEMU_HARDWARE
@@ -34,13 +39,6 @@ endchoice
Support virtual hardware when the code detects it is
running on an emulator.
- config XEN
- depends on QEMU
- bool "Support Xen HVM"
- default y
- help
- Configure to be used by xen hvmloader, for a HVM guest.
-
config THREADS
bool "Parallelize hardware init"
default y
diff --git a/src/mtrr.c b/src/mtrr.c
index 0575b14..56f85f9 100644
--- a/src/mtrr.c
+++ b/src/mtrr.c
@@ -6,7 +6,6 @@
#include "util.h" // dprintf
#include "config.h" // CONFIG_*
-#include "paravirt.h" // runningOnXen
#include "pci.h" // pcimem_start
#define MSR_MTRRcap 0x000000fe
@@ -34,7 +33,7 @@
void mtrr_setup(void)
{
- if (!CONFIG_MTRR_INIT || runningOnXen())
+ if (!CONFIG_MTRR_INIT)
return;
u32 eax, ebx, ecx, edx, cpuid_features;
diff --git a/src/pciinit.c b/src/pciinit.c
index 1d34653..0781b96 100644
--- a/src/pciinit.c
+++ b/src/pciinit.c
@@ -11,7 +11,6 @@
#include "pci_regs.h" // PCI_COMMAND
#include "ioport.h" // PORT_ATA1_CMD_BASE
#include "config.h" // CONFIG_*
-#include "paravirt.h" // runningOnXen
#include "memmap.h" // add_e820
#include "dev-q35.h"
@@ -734,7 +733,7 @@ static void pci_bios_map_devices(struct pci_bus *busses)
void
pci_setup(void)
{
- if (!CONFIG_QEMU || runningOnXen()) {
+ if (!CONFIG_QEMU) {
// PCI setup already done by coreboot or Xen - just do probe.
pci_probe_devices();
return;
diff --git a/src/post.c b/src/post.c
index 2c5e34e..c76144a 100644
--- a/src/post.c
+++ b/src/post.c
@@ -179,7 +179,7 @@ platform_hardware_setup(void)
// Setup external BIOS interface tables
if (CONFIG_COREBOOT)
coreboot_biostable_setup();
- else if (runningOnXen())
+ else if (CONFIG_XEN)
xen_biostable_setup();
else
qemu_biostable_setup();
@@ -319,7 +319,7 @@ dopost(void)
qemu_cfg_preinit();
if (CONFIG_COREBOOT)
coreboot_preinit();
- else if (runningOnXen())
+ else if (CONFIG_XEN)
xen_ramsize_preinit();
else
qemu_ramsize_preinit();
diff --git a/src/shadow.c b/src/shadow.c
index c9e8165..026d966 100644
--- a/src/shadow.c
+++ b/src/shadow.c
@@ -10,7 +10,6 @@
#include "config.h" // CONFIG_*
#include "pci_ids.h" // PCI_VENDOR_ID_INTEL
#include "pci_regs.h" // PCI_VENDOR_ID
-#include "paravirt.h" // runningOnXen
#include "dev-q35.h" // PCI_VENDOR_ID_INTEL
// On the emulators, the bios at 0xf0000 is also at 0xffff0000
@@ -119,7 +118,7 @@ static const struct pci_device_id dram_controller_make_readonly_tbl[] = {
void
make_bios_writable(void)
{
- if (!CONFIG_QEMU || runningOnXen())
+ if (!CONFIG_QEMU)
return;
dprintf(3, "enabling shadow ram\n");
@@ -148,7 +147,7 @@ make_bios_writable(void)
void
make_bios_readonly(void)
{
- if (!CONFIG_QEMU || runningOnXen())
+ if (!CONFIG_QEMU)
return;
dprintf(3, "locking shadow ram\n");
@@ -161,7 +160,7 @@ make_bios_readonly(void)
void
qemu_prep_reset(void)
{
- if (!CONFIG_QEMU || runningOnXen())
+ if (!CONFIG_QEMU)
return;
// QEMU doesn't map 0xc0000-0xfffff back to the original rom on a
// reset, so do that manually before invoking a hard reset.
diff --git a/src/smm.c b/src/smm.c
index 4128296..2083804 100644
--- a/src/smm.c
+++ b/src/smm.c
@@ -10,7 +10,6 @@
#include "config.h" // CONFIG_*
#include "ioport.h" // outb
#include "pci_ids.h" // PCI_VENDOR_ID_INTEL
-#include "paravirt.h" // runningOnXen
#include "dev-q35.h"
ASM32FLAT(
@@ -184,8 +183,8 @@ static const struct pci_device_id smm_init_tbl[] = {
void
smm_setup(void)
{
- if (!CONFIG_USE_SMM || runningOnXen())
- return;
+ if (!CONFIG_USE_SMM)
+ return;
dprintf(3, "init smm\n");
pci_find_init_device(smm_init_tbl, NULL);
diff --git a/src/xen.c b/src/xen.c
index 32edcd1..e8ca9e0 100644
--- a/src/xen.c
+++ b/src/xen.c
@@ -76,10 +76,9 @@ void xen_preinit(void)
break;
}
}
- if (!xen_cpuid_base) {
- dprintf(1, "No Xen hypervisor found.\n");
- return;
- }
+ if (!xen_cpuid_base)
+ panic("No Xen hypervisor found.\n");
+
PlatformRunningOn = PF_QEMU|PF_XEN;
}
@@ -95,7 +94,7 @@ void xen_hypercall_setup(void)
xen_extraversion_t extraversion;
unsigned long i;
- if (!runningOnXen())
+ if (!CONFIG_XEN)
return;
cpuid(xen_cpuid_base + 2, &eax, &ebx, &ecx, &edx);
--
dwmw2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 6171 bytes
Desc: not available
URL: <http://www.seabios.org/pipermail/seabios/attachments/20130211/3f6f4cb7/attachment-0001.bin>
More information about the SeaBIOS
mailing list