mirror of
https://github.com/linuxboot/heads.git
synced 2024-12-24 23:26:44 +00:00
f618f09a69
This modifies the segment at 0x0 so that it contains enough of a fake Extended BIOS Data Area at addresses 0x40e and 0x413 that Xen can correctly locate its trampoline code. Since custom Xen is no longer required, we can remove the module, the patches and all of the references to it in the board definition files.
90 lines
3.1 KiB
Diff
90 lines
3.1 KiB
Diff
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 <memory.h> 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)
|