[Linaro-uefi,v6,3/4] * util/grub.d/20_linux_xen.in: Add xen_boot command support

Message ID 1469524423-7082-4-git-send-email-fu.wei@linaro.org
State New
Headers show

Commit Message

Fu Wei Fu July 26, 2016, 9:13 a.m.
From: Fu Wei <fu.wei@linaro.org>

This patch adds the support of xen_boot command:
    xen_hypervisor
    xen_module

Also add a new "feature_xen_boot" to indicate this grub support
xen_boot command.

Signed-off-by: Fu Wei <fu.wei@linaro.org>
---
 grub-core/normal/main.c     |  2 +-
 util/grub.d/20_linux_xen.in | 13 ++++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

Comments

Daniel Kiper Nov. 3, 2016, 3:19 p.m. | #1
On Tue, Jul 26, 2016 at 05:13:42PM +0800, fu.wei@linaro.org wrote:
> From: Fu Wei <fu.wei@linaro.org>
>
> This patch adds the support of xen_boot command:
>     xen_hypervisor
>     xen_module
>
> Also add a new "feature_xen_boot" to indicate this grub support
> xen_boot command.
>
> Signed-off-by: Fu Wei <fu.wei@linaro.org>
> ---
>  grub-core/normal/main.c     |  2 +-
>  util/grub.d/20_linux_xen.in | 13 ++++++++++---
>  2 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
> index 78a70a8..3402a05 100644
> --- a/grub-core/normal/main.c
> +++ b/grub-core/normal/main.c
> @@ -488,7 +488,7 @@ static const char *features[] = {
>    "feature_chainloader_bpb", "feature_ntldr", "feature_platform_search_hint",
>    "feature_default_font_path", "feature_all_video_module",
>    "feature_menuentry_id", "feature_menuentry_options", "feature_200_final",
> -  "feature_nativedisk_cmd", "feature_timeout_style"
> +  "feature_nativedisk_cmd", "feature_timeout_style", "feature_xen_boot"

I do not like it. This is not generic feature but ARM specific one.
Hence, we should not announce it as generic stuff. Then...

>  };
>
>  GRUB_MOD_INIT(normal)
> diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
> index c48af94..231e640 100644
> --- a/util/grub.d/20_linux_xen.in
> +++ b/util/grub.d/20_linux_xen.in
> @@ -122,16 +122,23 @@ linux_entry ()
>          else
>              xen_rm_opts="no-real-mode edd=off"
>          fi
> -	multiboot	${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
> +        if [ "x\$feature_xen_boot" != xy ]; then

...we should consult $grub_platform and/or $grub_cpu here.

Daniel

Patch

diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
index 78a70a8..3402a05 100644
--- a/grub-core/normal/main.c
+++ b/grub-core/normal/main.c
@@ -488,7 +488,7 @@  static const char *features[] = {
   "feature_chainloader_bpb", "feature_ntldr", "feature_platform_search_hint",
   "feature_default_font_path", "feature_all_video_module",
   "feature_menuentry_id", "feature_menuentry_options", "feature_200_final",
-  "feature_nativedisk_cmd", "feature_timeout_style"
+  "feature_nativedisk_cmd", "feature_timeout_style", "feature_xen_boot"
 };
 
 GRUB_MOD_INIT(normal)
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
index c48af94..231e640 100644
--- a/util/grub.d/20_linux_xen.in
+++ b/util/grub.d/20_linux_xen.in
@@ -122,16 +122,23 @@  linux_entry ()
         else
             xen_rm_opts="no-real-mode edd=off"
         fi
-	multiboot	${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
+        if [ "x\$feature_xen_boot" != xy ]; then
+            xen_loader="multiboot"
+            module_loader="module"
+        else
+            xen_loader="xen_hypervisor"
+            module_loader="xen_module"
+        fi
+        \${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