]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
util/grub.d/20_linux_xen.in: Add xen_boot command support for aarch64
authorFu Wei <fu.wei@linaro.org>
Sun, 14 May 2017 07:43:46 +0000 (15:43 +0800)
committerDaniel Kiper <daniel.kiper@oracle.com>
Thu, 18 May 2017 20:30:35 +0000 (22:30 +0200)
This patch adds the support of xen_boot command for aarch64:
    xen_hypervisor
    xen_module
These two commands are only for aarch64, since it has its own protocol and
commands to boot xen hypervisor and Dom0, but not multiboot.

For other architectures, they are still using multiboot and module
commands.

Signed-off-by: Fu Wei <fu.wei@linaro.org>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
util/grub.d/20_linux_xen.in

index c48af948d6ecdf672aa341f713912ba15de8f27d..c002fc9f9465c08945b5ab7326033b538c0184e6 100644 (file)
@@ -122,16 +122,16 @@ linux_entry ()
         else
             xen_rm_opts="no-real-mode edd=off"
         fi
-       multiboot       ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
+       ${xen_loader}   ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
        echo    '$(echo "$lmessage" | grub_quote)'
-       module  ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
+       ${module_loader}        ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
 EOF
   if test -n "${initrd}" ; then
     # TRANSLATORS: ramdisk isn't identifier. Should be translated.
     message="$(gettext_printf "Loading initial ramdisk ...")"
     sed "s/^/$submenu_indentation/" << EOF
        echo    '$(echo "$message" | grub_quote)'
-       module  --nounzip   ${rel_dirname}/${initrd}
+       ${module_loader}        --nounzip   ${rel_dirname}/${initrd}
 EOF
   fi
   sed "s/^/$submenu_indentation/" << EOF
@@ -206,6 +206,14 @@ while [ "x${xen_list}" != "x" ] ; do
     if [ "x$is_top_level" != xtrue ]; then
        echo "  submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
     fi
+    $grub_file --is-arm64-efi $current_xen
+    if [ $? -ne 0 ]; then
+       xen_loader="multiboot"
+       module_loader="module"
+    else
+       xen_loader="xen_hypervisor"
+       module_loader="xen_module"
+    fi
     while [ "x$list" != "x" ] ; do
        linux=`version_find_latest $list`
        gettext_printf "Found linux image: %s\n" "$linux" >&2