bc092b9
From d33045ce7ffcb7c1e4a60c14d5ca64b36e3c5abe Mon Sep 17 00:00:00 2001
bc092b9
From: Fu Wei <fu.wei@linaro.org>
bc092b9
Date: Sun, 14 May 2017 15:43:46 +0800
78e1a10
Subject: [PATCH 040/216] util/grub.d/20_linux_xen.in: Add xen_boot command
bc092b9
 support for aarch64
bc092b9
bc092b9
This patch adds the support of xen_boot command for aarch64:
bc092b9
    xen_hypervisor
bc092b9
    xen_module
bc092b9
These two commands are only for aarch64, since it has its own protocol and
bc092b9
commands to boot xen hypervisor and Dom0, but not multiboot.
bc092b9
bc092b9
For other architectures, they are still using multiboot and module
bc092b9
commands.
bc092b9
bc092b9
Signed-off-by: Fu Wei <fu.wei@linaro.org>
bc092b9
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
bc092b9
---
bc092b9
 util/grub.d/20_linux_xen.in | 14 +++++++++++---
bc092b9
 1 file changed, 11 insertions(+), 3 deletions(-)
bc092b9
bc092b9
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
ec4acbb
index c48af948d6e..c002fc9f946 100644
bc092b9
--- a/util/grub.d/20_linux_xen.in
bc092b9
+++ b/util/grub.d/20_linux_xen.in
bc092b9
@@ -122,16 +122,16 @@ linux_entry ()
bc092b9
         else
bc092b9
             xen_rm_opts="no-real-mode edd=off"
bc092b9
         fi
bc092b9
-	multiboot	${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
bc092b9
+	${xen_loader}	${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
bc092b9
 	echo	'$(echo "$lmessage" | grub_quote)'
bc092b9
-	module	${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
bc092b9
+	${module_loader}	${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
bc092b9
 EOF
bc092b9
   if test -n "${initrd}" ; then
bc092b9
     # TRANSLATORS: ramdisk isn't identifier. Should be translated.
bc092b9
     message="$(gettext_printf "Loading initial ramdisk ...")"
bc092b9
     sed "s/^/$submenu_indentation/" << EOF
bc092b9
 	echo	'$(echo "$message" | grub_quote)'
bc092b9
-	module	--nounzip   ${rel_dirname}/${initrd}
bc092b9
+	${module_loader}	--nounzip   ${rel_dirname}/${initrd}
bc092b9
 EOF
bc092b9
   fi
bc092b9
   sed "s/^/$submenu_indentation/" << EOF
bc092b9
@@ -206,6 +206,14 @@ while [ "x${xen_list}" != "x" ] ; do
bc092b9
     if [ "x$is_top_level" != xtrue ]; then
bc092b9
 	echo "	submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
bc092b9
     fi
bc092b9
+    $grub_file --is-arm64-efi $current_xen
bc092b9
+    if [ $? -ne 0 ]; then
bc092b9
+	xen_loader="multiboot"
bc092b9
+	module_loader="module"
bc092b9
+    else
bc092b9
+	xen_loader="xen_hypervisor"
bc092b9
+	module_loader="xen_module"
bc092b9
+    fi
bc092b9
     while [ "x$list" != "x" ] ; do
bc092b9
 	linux=`version_find_latest $list`
bc092b9
 	gettext_printf "Found linux image: %s\n" "$linux" >&2
bc092b9
-- 
ec4acbb
2.15.0
bc092b9