[SeaBIOS] [PATCHv2 0/6] Improved multi-platform support

Ian Campbell ijc at hellion.org.uk
Thu Feb 14 19:10:43 CET 2013


On Thu, 2013-02-14 at 17:11 +0000, Ian Campbell wrote:
> On Thu, 2013-02-14 at 16:47 +0000, David Woodhouse wrote:
> > On Thu, 2013-02-14 at 16:41 +0000, Ian Campbell wrote:
> > > On Thu, 2013-02-14 at 13:05 +0000, David Woodhouse wrote:
> > > > 
> > > > Anyway, I appear to have established that the qemu fw_cfg *doesn't*
> > > > exist in your domains — so how you pass bootorder to the guest, if
> > > you
> > > > successfully do so at all, I have no idea. 
> > > 
> > > Asking around no one seems to have any idea how this works, other than
> > > we pass it to qemu.
> > 
> > *Does* it work?
> 
> People seem to think so, but I'm starting to wonder. I'm going to go and
> check for myself now.

I can indeed select between disk, network and cdrom using the
boot="c" (or "d" or "n") option.

> > And — more to the point, since this is my only real reason for caring
> > about it at all — does it *stop* working if you build SeaBIOS from my
> > tree at git.infradead.org/users/dwmw2/seabios.git ?
> 
> I will give that a go second.

I tested:
HEAD is now at e62d172 Make Xen one of the top-level build target choices
with the attached config and I'm afraid it booted from the cdrom no
matter what I did in my config file.

I enabled CONFIG_QEMU_HARDWARE (seabios2.config) and that didn't help
(which surprised me because I associate that option with fw_cfg).

The following quick hack didn't help, so something deeper must be up, I
can have another poke tomorrow and see if I can work out how this ever
worked...

BTW, the disk stanza for a cdrom is 'file:/scratch/mini.iso,hdc:cdrom,r'

Ian.

diff --git a/src/paravirt.c b/src/paravirt.c
index cc64094..c4ffd32 100644
--- a/src/paravirt.c
+++ b/src/paravirt.c
@@ -157,7 +157,7 @@ void qemu_cfg_preinit(void)
     char *sig = "QEMU";
     int i;
 
-    if (!CONFIG_QEMU)
+    if (!CONFIG_QEMU&&!CONFIG_XEN)
         return;
 
     qemu_cfg_present = 1;
@@ -433,7 +433,7 @@ struct QemuCfgFile {
 
 void qemu_romfile_init(void)
 {
-    if (!CONFIG_QEMU || !qemu_cfg_present)
+    if ((!CONFIG_QEMU && !CONFIG_XEN) || !qemu_cfg_present)
         return;
 
     u32 count;

-- 
Ian Campbell

rugged, adj.:
	Too heavy to lift.

-------------- next part --------------
#
# Automatically generated make config: don't edit
# SeaBIOS Configuration
# Thu Feb 14 17:53:04 2013
#

#
# General Features
#
# CONFIG_COREBOOT is not set
# CONFIG_QEMU is not set
# CONFIG_CSM is not set
CONFIG_XEN=y
# CONFIG_QEMU_HARDWARE is not set
CONFIG_THREADS=y
# CONFIG_THREAD_OPTIONROMS is not set
CONFIG_RELOCATE_INIT=y
CONFIG_BOOTMENU=y
# CONFIG_BOOTSPLASH is not set
CONFIG_BOOTORDER=y

#
# Hardware support
#
CONFIG_ATA=y
CONFIG_ATA_DMA=y
CONFIG_ATA_PIO32=y
CONFIG_AHCI=y
CONFIG_MEGASAS=y
CONFIG_FLOPPY=y
CONFIG_PS2PORT=y
CONFIG_USB=y
CONFIG_USB_UHCI=y
CONFIG_USB_OHCI=y
CONFIG_USB_EHCI=y
CONFIG_USB_MSC=y
CONFIG_USB_UAS=y
CONFIG_USB_HUB=y
CONFIG_USB_KEYBOARD=y
CONFIG_USB_MOUSE=y
CONFIG_SERIAL=y
CONFIG_LPT=y
CONFIG_PMTIMER=y

#
# BIOS interfaces
#
CONFIG_DRIVES=y
CONFIG_CDROM_BOOT=y
CONFIG_CDROM_EMU=y
CONFIG_PCIBIOS=y
CONFIG_APMBIOS=y
CONFIG_PNPBIOS=y
CONFIG_OPTIONROMS=y
CONFIG_PMM=y
CONFIG_BOOT=y
CONFIG_KEYBOARD=y
CONFIG_KBD_CALL_INT15_4F=y
CONFIG_MOUSE=y
CONFIG_S3_RESUME=y
CONFIG_VGAHOOKS=y
# CONFIG_DISABLE_A20 is not set

#
# VGA ROM
#
CONFIG_NO_VGABIOS=y
# CONFIG_VGA_STANDARD_VGA is not set
# CONFIG_VGA_CIRRUS is not set
# CONFIG_VGA_BOCHS is not set
# CONFIG_VGA_GEODEGX2 is not set
# CONFIG_VGA_GEODELX is not set
# CONFIG_BUILD_VGABIOS is not set

#
# Debugging
#
CONFIG_DEBUG_LEVEL=1
# CONFIG_DEBUG_SERIAL is not set
-------------- next part --------------
#
# Automatically generated make config: don't edit
# SeaBIOS Configuration
# Thu Feb 14 17:55:58 2013
#

#
# General Features
#
# CONFIG_COREBOOT is not set
# CONFIG_QEMU is not set
# CONFIG_CSM is not set
CONFIG_XEN=y
CONFIG_QEMU_HARDWARE=y
CONFIG_THREADS=y
# CONFIG_THREAD_OPTIONROMS is not set
CONFIG_RELOCATE_INIT=y
CONFIG_BOOTMENU=y
# CONFIG_BOOTSPLASH is not set
CONFIG_BOOTORDER=y

#
# Hardware support
#
CONFIG_ATA=y
CONFIG_ATA_DMA=y
CONFIG_ATA_PIO32=y
CONFIG_AHCI=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_SCSI=y
CONFIG_ESP_SCSI=y
CONFIG_LSI_SCSI=y
CONFIG_MEGASAS=y
CONFIG_FLOPPY=y
CONFIG_PS2PORT=y
CONFIG_USB=y
CONFIG_USB_UHCI=y
CONFIG_USB_OHCI=y
CONFIG_USB_EHCI=y
CONFIG_USB_MSC=y
CONFIG_USB_UAS=y
CONFIG_USB_HUB=y
CONFIG_USB_KEYBOARD=y
CONFIG_USB_MOUSE=y
CONFIG_SERIAL=y
CONFIG_LPT=y
CONFIG_PMTIMER=y

#
# BIOS interfaces
#
CONFIG_DRIVES=y
CONFIG_CDROM_BOOT=y
CONFIG_CDROM_EMU=y
CONFIG_PCIBIOS=y
CONFIG_APMBIOS=y
CONFIG_PNPBIOS=y
CONFIG_OPTIONROMS=y
CONFIG_PMM=y
CONFIG_BOOT=y
CONFIG_KEYBOARD=y
CONFIG_KBD_CALL_INT15_4F=y
CONFIG_MOUSE=y
CONFIG_S3_RESUME=y
CONFIG_VGAHOOKS=y
# CONFIG_DISABLE_A20 is not set

#
# VGA ROM
#
CONFIG_NO_VGABIOS=y
# CONFIG_VGA_STANDARD_VGA is not set
# CONFIG_VGA_CIRRUS is not set
# CONFIG_VGA_BOCHS is not set
# CONFIG_VGA_GEODEGX2 is not set
# CONFIG_VGA_GEODELX is not set
# CONFIG_BUILD_VGABIOS is not set

#
# Debugging
#
CONFIG_DEBUG_LEVEL=1
# CONFIG_DEBUG_SERIAL is not set


More information about the SeaBIOS mailing list