diff -u --recursive clean/kexec-tools-2.0.16/Makefile.in kexec-tools-2.0.16/Makefile.in --- clean/kexec-tools-2.0.16/Makefile.in 2016-12-09 04:42:06.000000000 -0500 +++ kexec-tools-2.0.16/Makefile.in 2018-02-28 05:39:20.461000000 -0500 @@ -158,16 +158,16 @@ # kdump (read a crashdump from memory) # -include $(srcdir)/kdump/Makefile +#include $(srcdir)/kdump/Makefile # vmcore-dmesg (read dmesg from a vmcore) # -include $(srcdir)/vmcore-dmesg/Makefile +#include $(srcdir)/vmcore-dmesg/Makefile # # kexec_test (test program) # -include $(srcdir)/kexec_test/Makefile +#include $(srcdir)/kexec_test/Makefile SPEC=$(PACKAGE_NAME).spec GENERATED_SRCS:= $(SPEC) diff -u --recursive clean/kexec-tools-2.0.16/include/config.h kexec-tools-2.0.16/include/config.h --- clean/kexec-tools-2.0.16/include/config.h 2017-11-20 04:17:12.000000000 -0500 +++ kexec-tools-2.0.16/include/config.h 2018-02-28 05:39:22.420000000 -0500 @@ -17,7 +17,7 @@ /* #undef HAVE_LIBXENCTRL */ /* Define to 1 if you have the `z' library (-lz). */ -/* #undef HAVE_LIBZ */ +#define HAVE_LIBZ 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 diff -u --recursive clean/kexec-tools-2.0.16/kexec/kexec.c kexec-tools-2.0.16/kexec/kexec.c --- clean/kexec-tools-2.0.16/kexec/kexec.c 2017-03-02 04:45:46.000000000 -0500 +++ kexec-tools-2.0.16/kexec/kexec.c 2018-02-28 10:40:01.662000000 -0500 @@ -794,6 +794,27 @@ if (sort_segments(&info) < 0) { return -1; } + +#if 1 + // force segment 0 to have memsz == bufsz + // so that it won't overwrite EBDA + if (info.segment[0].mem == 0) + { + if (kexec_debug) + printf("hack ebda into segment 0!\n"); + + uint8_t * ebda = calloc(1, info.segment[0].memsz); + memcpy(ebda, info.segment[0].buf, info.segment[0].bufsz); + info.segment[0].bufsz = info.segment[0].memsz; + info.segment[0].buf = ebda; + + // install some default EBDA values that are off scale, + // which will force Xen to use the multiboot info + *(uint16_t*)(ebda + 0x40e) = 0xFFFF; // segment + *(uint16_t*)(ebda + 0x413) = 0xFFFF; // size + } +#endif + /* if purgatory is loaded update it */ update_purgatory(&info); if (entry) diff -u --recursive clean/kexec-tools-2.0.16/purgatory/Makefile kexec-tools-2.0.16/purgatory/Makefile --- clean/kexec-tools-2.0.16/purgatory/Makefile 2017-01-31 06:23:48.000000000 -0500 +++ kexec-tools-2.0.16/purgatory/Makefile 2018-02-28 05:39:20.461000000 -0500 @@ -44,7 +44,6 @@ mkdir -p $(@D) $(COMPILE.c) -o $@ $^ -$(PURGATORY): CC=$(TARGET_CC) $(PURGATORY): CFLAGS+=$(PURGATORY_EXTRA_CFLAGS) \ $($(ARCH)_PURGATORY_EXTRA_CFLAGS) \ -Os -fno-builtin -ffreestanding \ diff -u --recursive clean/kexec-tools-2.0.16/util/Makefile kexec-tools-2.0.16/util/Makefile --- clean/kexec-tools-2.0.16/util/Makefile 2010-07-29 05:22:16.000000000 -0400 +++ kexec-tools-2.0.16/util/Makefile 2018-02-28 05:39:20.461000000 -0500 @@ -2,7 +2,7 @@ $(BIN_TO_HEX): $(srcdir)/util/bin-to-hex.c @$(MKDIR) -p $(@D) - $(LINK.o) $(CFLAGS) -o $@ $^ + $(BUILD_CC) $(BUILD_CFLAGS) -o $@ $^ $(BIN_TO_HEX): CC=$(BUILD_CC) $(BIN_TO_HEX): CFLAGS=$(BUILD_CFLAGS)