mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
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>
105 lines
2.9 KiB
Makefile
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
|