Re: [Xen-devel] [PATCH v4 17/19] xen_pvh: support building a standalone image

2018-11-09 Thread Daniel Kiper
On Fri, Nov 02, 2018 at 01:37:36PM +0100, Juergen Gross wrote:
> Support mkimage for xen_pvh.
>
> In order to avoid using plain integers for the ELF notes use the
> available Xen include instead. While at it replace the plain numbers
> for Xen PV mode, too.
>
> Signed-off-by: Juergen Gross 
> Reviewed-by: Daniel Kiper 
> ---
> V2: some style adjustments (Daniel Kiper)
> use defines for elf-notes (Daniel Kiper)

Thanks a lot! However, I would like to ask you to move the
latter to separate patch. You can retain my RB though.

Daniel

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH v4 17/19] xen_pvh: support building a standalone image

2018-11-02 Thread Juergen Gross
Support mkimage for xen_pvh.

In order to avoid using plain integers for the ELF notes use the
available Xen include instead. While at it replace the plain numbers
for Xen PV mode, too.

Signed-off-by: Juergen Gross 
Reviewed-by: Daniel Kiper 
---
V2: some style adjustments (Daniel Kiper)
use defines for elf-notes (Daniel Kiper)

I didn't replace the 4096 by a PAGE_SIZE macro as requested by Daniel,
as there isn't such a macro easily available for util/mkimage.c and
I didn't introduce its usage.
---
 include/grub/util/mkimage.h |  3 ++-
 util/grub-mkimage32.c   |  4 +++-
 util/grub-mkimage64.c   |  4 +++-
 util/grub-mkimagexx.c   | 58 +
 util/mkimage.c  | 23 +-
 5 files changed, 78 insertions(+), 14 deletions(-)

diff --git a/include/grub/util/mkimage.h b/include/grub/util/mkimage.h
index b3a5ca132..ba9f568f6 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 1f2d2..026a2dd59 100644
--- a/util/grub-mkimage32.c
+++ b/util/grub-mkimage32.c
@@ -17,7 +17,9 @@
 # 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
 
 #ifndef GRUB_MKIMAGEXX
 #include "grub-mkimagexx.c"
diff --git a/util/grub-mkimage64.c b/util/grub-mkimage64.c
index 4ff72a625..170defb40 100644
--- a/util/grub-mkimage64.c
+++ b/util/grub-mkimage64.c
@@ -17,7 +17,9 @@
 # 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
 
 #ifndef GRUB_MKIMAGEXX
 #include "grub-mkimagexx.c"
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
index a483c674c..e94a721b4 100644
--- a/util/grub-mkimagexx.c
+++ b/util/grub-mkimagexx.c
@@ -48,6 +48,8 @@
 #include 
 #include 
 
+#include 
+
 #pragma GCC diagnostic ignored "-Wcast-align"
 
 #define GRUB_MKIMAGEXX
@@ -227,12 +229,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, 
layout->align);
@@ -341,7 +343,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct 
grub_install_image_target_desc
   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 (sizeof (PACKAGE_NAME));
-  note_ptr->n_type = grub_host_to_target32 (6);
+  note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_GUEST_OS);
   ptr += sizeof (Elf_Nhdr);
   memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME));
   ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4);
@@ -352,7 +354,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct 
grub_install_image_target_desc
   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 (sizeof ("generic"));
-  note_ptr->n_type = grub_host_to_target32 (8);
+  note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_LOADER);
   ptr += sizeof (Elf_Nhdr);
   memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME));
   ptr += ALIGN_UP (sizeof (GRUB_XEN_NOTE_NAME), 4);
@@ -363,7 +365,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct 
grub_install_image_target_desc
   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 (sizeof ("xen-3.0"));
-  note_ptr->n_type = grub_host_to_target32 (5);
+  note_ptr->n_type = grub_host_to_target32 (XEN_ELFNOTE_XEN_VERSION);
   ptr += sizeof (Elf_Nhdr);
   memcpy (ptr, GRUB_XEN_NOTE_NAME, sizeof (GRUB_XEN_NOTE_NAME));