From 14ee3c05f3ef7d1d2580043392c500be2fc7cbfe Mon Sep 17 00:00:00 2001 From: Date: Tue, 24 Jan 2012 15:09:31 +0000 Subject: Clone and build Seabios by default From: Stefano Stabellini Signed-off-by: Stefano Stabellini Committed-by: Ian Jackson Acked-by: Ian Campbell --- .hgignore | 2 ++ Config.mk | 12 ++----- Makefile | 4 +++ tools/firmware/Makefile | 21 +++++++++-- tools/firmware/hvmloader/Makefile | 1 + tools/firmware/seabios-config | 73 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 102 insertions(+), 11 deletions(-) create mode 100644 tools/firmware/seabios-config diff --git a/.hgignore b/.hgignore index cbcc0f5218..64b440e5f2 100644 --- a/.hgignore +++ b/.hgignore @@ -300,6 +300,8 @@ ^tools/qemu-xen-traditional-dir$ ^tools/qemu-xen-dir-remote ^tools/qemu-xen-dir$ +^tools/firmware/seabios-dir-remote +^tools/firmware/seabios-dir$ ^tools/ocaml/.*/.*\.annot$ ^tools/ocaml/.*/.*\.cmx?a$ ^tools/ocaml/.*/META$ diff --git a/Config.mk b/Config.mk index 5f67a9f997..f0d19dc392 100644 --- a/Config.mk +++ b/Config.mk @@ -209,10 +209,13 @@ endif ifeq ($(GIT_HTTP),y) QEMU_UPSTREAM_URL ?= http://xenbits.xen.org/git-http/qemu-upstream-unstable.git +SEABIOS_UPSTREAM_URL ?= http://xenbits.xen.org/git-http/seabios.git else QEMU_UPSTREAM_URL ?= git://xenbits.xen.org/qemu-upstream-unstable.git +SEABIOS_UPSTREAM_URL ?= git://xenbits.xen.org/seabios.git endif QEMU_UPSTREAM_REVISION ?= master +SEABIOS_UPSTREAM_TAG ?= 7fc039e9c262b4199fab497f3e12f4e425c37560 # Specify which qemu-dm to use. This may be `ioemu' to use the old # Mercurial in-tree version, or a local directory, or a git URL. @@ -226,15 +229,6 @@ QEMU_TAG ?= bb36d632e4cabf47882adff07a45c6702c4a5b30 # Short answer -- do not enable this unless you know what you are # doing and are prepared for some pain. -# SeaBIOS integration is a work in progress. Before enabling this -# option you must clone git://git.qemu.org/seabios.git/, possibly add -# some development patches and then build it yourself before pointing -# this variable to it (using an absolute path). -# -# Note that using SeaBIOS requires the use the upstream qemu as the -# device model. -SEABIOS_DIR ?= - # Optional components XENSTAT_XENTOP ?= y VTPM_TOOLS ?= n diff --git a/Makefile b/Makefile index edc5e3d92e..8edea0db5f 100644 --- a/Makefile +++ b/Makefile @@ -98,6 +98,10 @@ tools/qemu-xen-dir: tools/qemu-xen-dir-force-update: $(MAKE) -C tools qemu-xen-dir-force-update +.PHONY: tools/firmware/seabios-dir-force-update +tools/firmware/seabios-dir-force-update: + $(MAKE) -C tools/firmware seabios-dir-force-update + .PHONY: install-docs install-docs: sh ./docs/check_pkgs && $(MAKE) -C docs install || true diff --git a/tools/firmware/Makefile b/tools/firmware/Makefile index 4b6d144134..c3ec9a07b9 100644 --- a/tools/firmware/Makefile +++ b/tools/firmware/Makefile @@ -6,13 +6,18 @@ TARGET := hvmloader/hvmloader INST_DIR := $(DESTDIR)$(XENFIRMWAREDIR) SUBDIRS := +SUBDIRS += seabios-dir SUBDIRS += rombios SUBDIRS += vgabios SUBDIRS += etherboot SUBDIRS += hvmloader +seabios-dir: + GIT=$(GIT) $(XEN_ROOT)/scripts/git-checkout.sh $(SEABIOS_UPSTREAM_URL) $(SEABIOS_UPSTREAM_TAG) seabios-dir + cp seabios-config seabios-dir/.config; + .PHONY: all -all: +all: seabios-dir @set -e; if [ $$((`( bcc -v 2>&1 | grep version || echo 0.0.0 ) | cut -d' ' -f 3 | awk -F. '{ printf "0x%02x%02x%02x", $$1, $$2, $$3}'`)) -lt $$((0x00100e)) ] ; then \ echo "==========================================================================="; \ echo "Require dev86 rpm or bin86 & bcc debs version >= 0.16.14 to build firmware!"; \ @@ -35,4 +40,16 @@ clean: subdirs-clean distclean: subdirs-distclean subdir-distclean-etherboot: .phony - $(MAKE) -C etherboot distclean \ No newline at end of file + $(MAKE) -C etherboot distclean + +subdir-distclean-seabios-dir: .phony + rm -rf seabios-dir seabios-dir-remote + +.PHONY: seabios-dir-force-update +seabios-dir-force-update: + set -ex; \ + if [ "$(SEABIOS_UPSTREAM_TAG)" ]; then \ + cd seabios-dir-remote; \ + $(GIT) fetch origin; \ + $(GIT) reset --hard $(SEABIOS_UPSTREAM_TAG); \ + fi diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index ec33155128..41a4369ff0 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -44,6 +44,7 @@ CFLAGS += -DENABLE_ROMBIOS ROMBIOS_ROM := $(ROMBIOS_DIR)/BIOS-bochs-latest endif +SEABIOS_DIR := ../seabios-dir ifneq ($(SEABIOS_DIR),) OBJS += seabios.o CFLAGS += -DENABLE_SEABIOS diff --git a/tools/firmware/seabios-config b/tools/firmware/seabios-config new file mode 100644 index 0000000000..202d15fad5 --- /dev/null +++ b/tools/firmware/seabios-config @@ -0,0 +1,73 @@ +# +# Automatically generated make config: don't edit +# SeaBIOS Configuration +# Wed Sep 7 13:03:21 2011 +# + +# +# General Features +# +# CONFIG_COREBOOT is not set +CONFIG_XEN=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_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_HUB=y +CONFIG_USB_KEYBOARD=y +CONFIG_USB_MOUSE=y +CONFIG_SERIAL=y +CONFIG_LPT=y +# CONFIG_USE_SMM is not set +CONFIG_MTRR_INIT=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_OPTIONROMS_DEPLOYED is not set +CONFIG_PMM=y +CONFIG_BOOT=y +CONFIG_KEYBOARD=y +CONFIG_KBD_CALL_INT15_4F=y +CONFIG_MOUSE=y +CONFIG_S3_RESUME=y +# CONFIG_DISABLE_A20 is not set + +# +# BIOS Tables +# +CONFIG_PIRTABLE=y +CONFIG_MPTABLE=y +CONFIG_SMBIOS=y +CONFIG_ACPI=y + +# +# Debugging +# +CONFIG_DEBUG_LEVEL=1 +# CONFIG_DEBUG_SERIAL is not set -- cgit v1.2.3