Files
xen/tools/firmware/Makefile
T
Paul Durrant 970f8de3e4 tools/firmware: use a canned config for seabios
The use of seabios defconfig kills boot performance of Windows guests
because the default is for the int13 handler to use PIO when accessing
the emulated IDE device.

By instead using a canned configuration with the ATA settings overridden
to enable DMA access (and also wider PIO) boot performance is markedly
improved without the need to use a different (and possibly not supported)
device model.

This patch adds the canned configuration into tools/firmware and modifies
the Makefile rule to copy it into place.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
2017-03-29 18:28:51 +01:00

105 lines
2.9 KiB
Makefile

XEN_ROOT = $(CURDIR)/../..
include $(XEN_ROOT)/tools/Rules.mk
# hvmloader is a 32-bit protected mode binary.
TARGET := hvmloader/hvmloader
INST_DIR := $(DESTDIR)$(XENFIRMWAREDIR)
SUBDIRS-y :=
SUBDIRS-$(CONFIG_OVMF) += ovmf-dir
SUBDIRS-$(CONFIG_SEABIOS) += seabios-dir
SUBDIRS-$(CONFIG_ROMBIOS) += rombios
SUBDIRS-$(CONFIG_ROMBIOS) += vgabios
SUBDIRS-$(CONFIG_ROMBIOS) += etherboot
SUBDIRS-y += hvmloader
LD32BIT-$(CONFIG_FreeBSD) := LD32BIT_FLAG=-melf_i386_fbsd
ovmf-dir:
GIT=$(GIT) $(XEN_ROOT)/scripts/git-checkout.sh $(OVMF_UPSTREAM_URL) $(OVMF_UPSTREAM_REVISION) ovmf-dir
cp ovmf-makefile ovmf-dir/Makefile;
seabios-dir:
GIT=$(GIT) $(XEN_ROOT)/scripts/git-checkout.sh $(SEABIOS_UPSTREAM_URL) $(SEABIOS_UPSTREAM_REVISION) seabios-dir
cp seabios-config seabios-dir/.config;
.PHONY: all
all: $(SUBDIRS-y)
ifeq ($(CONFIG_ROMBIOS),y)
@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!"; \
echo "(visit http://www.debath.co.uk/dev86/ for more information)"; \
echo "==========================================================================="; \
false ; \
fi
endif
$(MAKE) $(LD32BIT-y) CC=$(CC) PYTHON=$(PYTHON) subdirs-$@
.PHONY: install
install: all
[ -d $(INST_DIR) ] || $(INSTALL_DIR) $(INST_DIR)
[ ! -e $(TARGET) ] || $(INSTALL_DATA) $(TARGET) $(INST_DIR)
ifeq ($(CONFIG_SEABIOS),y)
$(INSTALL_DATA) seabios-dir/out/bios.bin $(INST_DIR)/seabios.bin
endif
ifeq ($(CONFIG_OVMF),y)
$(INSTALL_DATA) ovmf-dir/ovmf.bin $(INST_DIR)/ovmf.bin
endif
.PHONY: clean
clean: subdirs-clean
.PHONY: distclean
distclean: subdirs-distclean
subdir-distclean-etherboot: .phony
$(MAKE) -C etherboot distclean
subdir-distclean-ovmf-dir: .phony
rm -rf ovmf-dir ovmf-dir-remote
subdir-distclean-seabios-dir: .phony
rm -rf seabios-dir seabios-dir-remote
.PHONY: ovmf-dir-force-update
ovmf-dir-force-update: ovmf-dir
set -ex; \
if [ "$(OVMF_UPSTREAM_REVISION)" ]; then \
cd ovmf-dir-remote; \
$(GIT) fetch origin; \
$(GIT) reset --hard $(OVMF_UPSTREAM_REVISION); \
fi
subdir-clean-ovmf-dir:
set -e; if test -d ovmf-dir/.; then \
$(MAKE) -C ovmf-dir clean; \
fi
.PHONY: seabios-dir-force-update
seabios-dir-force-update: seabios-dir
set -ex; \
if [ "$(SEABIOS_UPSTREAM_REVISION)" ]; then \
cd seabios-dir-remote; \
$(GIT) fetch origin; \
$(GIT) reset --hard $(SEABIOS_UPSTREAM_REVISION); \
fi
subdir-clean-seabios-dir:
set -e; if test -d seabios-dir/.; then \
$(MAKE) -C seabios-dir clean; \
fi
subtree-force-update:
ifeq ($(CONFIG_SEABIOS),y)
$(MAKE) seabios-dir-force-update
endif
ifeq ($(CONFIG_OVMF),y)
$(MAKE) ovmf-dir-force-update
endif
subtree-force-update-all:
$(MAKE) seabios-dir-force-update
$(MAKE) ovmf-dir-force-update