aboutsummaryrefslogtreecommitdiffstats
path: root/main/grub/0018-xen_pvh-Support-building-a-standalone-image.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/grub/0018-xen_pvh-Support-building-a-standalone-image.patch')
-rw-r--r--main/grub/0018-xen_pvh-Support-building-a-standalone-image.patch199
1 files changed, 0 insertions, 199 deletions
diff --git a/main/grub/0018-xen_pvh-Support-building-a-standalone-image.patch b/main/grub/0018-xen_pvh-Support-building-a-standalone-image.patch
deleted file mode 100644
index 1d1b43f33d..0000000000
--- a/main/grub/0018-xen_pvh-Support-building-a-standalone-image.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From f8edde763ef26a2eb9cab40998d97e8bc50bf7ef Mon Sep 17 00:00:00 2001
-From: Juergen Gross <jgross@suse.com>
-Date: Fri, 7 Dec 2018 13:11:46 +0100
-Subject: [PATCH 18/20] xen_pvh: Support building a standalone image
-
-Support mkimage for xen_pvh.
-
-Signed-off-by: Juergen Gross <jgross@suse.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Tested-by: Hans van Kranenburg <hans@knorrie.org>
-(cherry picked from commit 78899c42d74d638a48c9b3f0f25f39445b3c1d4c)
----
- include/grub/util/mkimage.h | 3 ++-
- util/grub-mkimage32.c | 4 +++-
- util/grub-mkimage64.c | 4 +++-
- util/grub-mkimagexx.c | 44 +++++++++++++++++++++++++++++++++----
- util/mkimage.c | 23 ++++++++++++++++++-
- 5 files changed, 70 insertions(+), 8 deletions(-)
-
-diff --git a/include/grub/util/mkimage.h b/include/grub/util/mkimage.h
-index 1a18708a8..776c58581 100644
---- a/include/grub/util/mkimage.h
-+++ b/include/grub/util/mkimage.h
-@@ -71,7 +71,8 @@ struct grub_install_image_target_desc
- IMAGE_I386_IEEE1275,
- IMAGE_LOONGSON_ELF, IMAGE_QEMU, IMAGE_PPC, IMAGE_YEELOONG_FLASH,
- IMAGE_FULOONG2F_FLASH, IMAGE_I386_PC_PXE, IMAGE_MIPS_ARC,
-- IMAGE_QEMU_MIPS_FLASH, IMAGE_UBOOT, IMAGE_XEN, IMAGE_I386_PC_ELTORITO
-+ IMAGE_QEMU_MIPS_FLASH, IMAGE_UBOOT, IMAGE_XEN, IMAGE_I386_PC_ELTORITO,
-+ IMAGE_XEN_PVH
- } id;
- enum
- {
-diff --git a/util/grub-mkimage32.c b/util/grub-mkimage32.c
-index 9b31397bc..b2a4be7e6 100644
---- a/util/grub-mkimage32.c
-+++ b/util/grub-mkimage32.c
-@@ -17,6 +17,8 @@
- # define ELF_R_SYM(val) ELF32_R_SYM(val)
- # define ELF_R_TYPE(val) ELF32_R_TYPE(val)
- # define ELF_ST_TYPE(val) ELF32_ST_TYPE(val)
--#define XEN_NOTE_SIZE 132
-+
-+#define XEN_NOTE_SIZE 132
-+#define XEN_PVH_NOTE_SIZE 20
-
- #include "grub-mkimagexx.c"
-diff --git a/util/grub-mkimage64.c b/util/grub-mkimage64.c
-index d83345924..aef033743 100644
---- a/util/grub-mkimage64.c
-+++ b/util/grub-mkimage64.c
-@@ -17,6 +17,8 @@
- # define ELF_R_SYM(val) ELF64_R_SYM(val)
- # define ELF_R_TYPE(val) ELF64_R_TYPE(val)
- # define ELF_ST_TYPE(val) ELF64_ST_TYPE(val)
--#define XEN_NOTE_SIZE 120
-+
-+#define XEN_NOTE_SIZE 120
-+#define XEN_PVH_NOTE_SIZE 24
-
- #include "grub-mkimagexx.c"
-diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
-index e7b8cf161..bf8f9bf9c 100644
---- a/util/grub-mkimagexx.c
-+++ b/util/grub-mkimagexx.c
-@@ -208,12 +208,12 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc
- phnum++;
- footer_size += sizeof (struct grub_ieee1275_note);
- }
-- if (image_target->id == IMAGE_XEN)
-+ if (image_target->id == IMAGE_XEN || image_target->id == IMAGE_XEN_PVH)
- {
- phnum++;
- shnum++;
- string_size += sizeof (".xen");
-- footer_size += XEN_NOTE_SIZE;
-+ footer_size += (image_target->id == IMAGE_XEN) ? XEN_NOTE_SIZE : XEN_PVH_NOTE_SIZE;
- }
- header_size = ALIGN_UP (sizeof (*ehdr) + phnum * sizeof (*phdr)
- + shnum * sizeof (*shdr) + string_size, align);
-@@ -392,6 +392,39 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc
- phdr->p_offset = grub_host_to_target32 (header_size + program_size);
- }
-
-+ if (image_target->id == IMAGE_XEN_PVH)
-+ {
-+ char *note_start = (elf_img + program_size + header_size);
-+ Elf_Nhdr *note_ptr;
-+ char *ptr = (char *) note_start;
-+
-+ grub_util_info ("adding XEN NOTE segment");
-+
-+ /* Phys32 Entry. */
-+ note_ptr = (Elf_Nhdr *) ptr;
-+ note_ptr->n_namesz = grub_host_to_target32 (sizeof (GRUB_XEN_NOTE_NAME));
-+ note_ptr->n_descsz = grub_host_to_target32 (image_target->voidp_sizeof);
-+ note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_PHYS32_ENTRY);
-+ ptr += sizeof (Elf_Nhdr);
-+ memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME));
-+ ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4);
-+ memset (ptr, 0, image_target->voidp_sizeof);
-+ *(grub_uint32_t *) ptr = GRUB_KERNEL_I386_XEN_PVH_LINK_ADDR;
-+ ptr += image_target->voidp_sizeof;
-+
-+ assert (XEN_PVH_NOTE_SIZE == (ptr - note_start));
-+
-+ phdr++;
-+ phdr->p_type = grub_host_to_target32 (PT_NOTE);
-+ phdr->p_flags = grub_host_to_target32 (PF_R);
-+ phdr->p_align = grub_host_to_target32 (image_target->voidp_sizeof);
-+ phdr->p_vaddr = 0;
-+ phdr->p_paddr = 0;
-+ phdr->p_filesz = grub_host_to_target32 (XEN_PVH_NOTE_SIZE);
-+ phdr->p_memsz = 0;
-+ phdr->p_offset = grub_host_to_target32 (header_size + program_size);
-+ }
-+
- if (note)
- {
- int note_size = sizeof (struct grub_ieee1275_note);
-@@ -467,7 +500,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc
- shdr->sh_entsize = grub_host_to_target32 (0);
- shdr++;
-
-- if (image_target->id == IMAGE_XEN)
-+ if (image_target->id == IMAGE_XEN || image_target->id == IMAGE_XEN_PVH)
- {
- memcpy (ptr, ".xen", sizeof (".xen"));
- shdr->sh_name = grub_host_to_target32 (ptr - str_start);
-@@ -475,7 +508,10 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc
- shdr->sh_type = grub_host_to_target32 (SHT_PROGBITS);
- shdr->sh_addr = grub_host_to_target_addr (target_addr + kernel_size);
- shdr->sh_offset = grub_host_to_target_addr (program_size + header_size);
-- shdr->sh_size = grub_host_to_target32 (XEN_NOTE_SIZE);
-+ if (image_target->id == IMAGE_XEN)
-+ shdr->sh_size = grub_host_to_target32 (XEN_NOTE_SIZE);
-+ else
-+ shdr->sh_size = grub_host_to_target32 (XEN_PVH_NOTE_SIZE);
- shdr->sh_link = grub_host_to_target32 (0);
- shdr->sh_info = grub_host_to_target32 (0);
- shdr->sh_addralign = grub_host_to_target32 (image_target->voidp_sizeof);
-diff --git a/util/mkimage.c b/util/mkimage.c
-index 9ad4cfe42..c3bd23479 100644
---- a/util/mkimage.c
-+++ b/util/mkimage.c
-@@ -132,6 +132,24 @@ static const struct grub_install_image_target_desc image_targets[] =
- .link_addr = GRUB_KERNEL_I386_PC_LINK_ADDR,
- .default_compression = GRUB_COMPRESSION_LZMA
- },
-+ {
-+ .dirname = "i386-xen_pvh",
-+ .names = { "i386-xen_pvh", NULL },
-+ .voidp_sizeof = 4,
-+ .bigendian = 0,
-+ .id = IMAGE_XEN_PVH,
-+ .flags = PLATFORM_FLAGS_NONE,
-+ .total_module_size = TARGET_NO_FIELD,
-+ .decompressor_compressed_size = TARGET_NO_FIELD,
-+ .decompressor_uncompressed_size = TARGET_NO_FIELD,
-+ .decompressor_uncompressed_addr = TARGET_NO_FIELD,
-+ .elf_target = EM_386,
-+ .section_align = 1,
-+ .vaddr_offset = 0,
-+ .link_addr = GRUB_KERNEL_I386_XEN_PVH_LINK_ADDR,
-+ .mod_align = GRUB_KERNEL_I386_XEN_PVH_MOD_ALIGN,
-+ .link_align = 4
-+ },
- {
- .dirname = "i386-pc",
- .names = { "i386-pc-pxe", NULL },
-@@ -816,7 +834,8 @@ grub_install_generate_image (const char *dir, const char *prefix,
- else
- kernel_img = grub_mkimage_load_image64 (kernel_path, total_module_size,
- &layout, image_target);
-- if (image_target->id == IMAGE_XEN && layout.align < 4096)
-+ if ((image_target->id == IMAGE_XEN || image_target->id == IMAGE_XEN_PVH) &&
-+ layout.align < 4096)
- layout.align = 4096;
-
- if ((image_target->flags & PLATFORM_FLAGS_DECOMPRESSORS)
-@@ -1046,6 +1065,7 @@ grub_install_generate_image (const char *dir, const char *prefix,
- case IMAGE_MIPS_ARC:
- case IMAGE_QEMU_MIPS_FLASH:
- case IMAGE_XEN:
-+ case IMAGE_XEN_PVH:
- break;
- case IMAGE_SPARC64_AOUT:
- case IMAGE_SPARC64_RAW:
-@@ -1622,6 +1642,7 @@ grub_install_generate_image (const char *dir, const char *prefix,
- case IMAGE_LOONGSON_ELF:
- case IMAGE_PPC:
- case IMAGE_XEN:
-+ case IMAGE_XEN_PVH:
- case IMAGE_COREBOOT:
- case IMAGE_I386_IEEE1275:
- {
---
-2.21.0
-