From: Fu Wei fu.wei@linaro.org
This patchset add xen_boot support into grup-mkconfig for generating xen boot entrances automatically
Also update the docs/grub.texi for new xen_boot commands.
This patchset has been tested on Foudation model with a bug fix: http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00205.html
ChangeLog: v5: Update the introduction of xen_module commands in docs/grub.texi, according to the suggestion from Julien Grall
v4: http://lists.gnu.org/archive/html/grub-devel/2016-05/ according to the XSM loading mechanism of Xen(upstreamed), update the introduction of xen_module commands in docs/grub.texi
v3: http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00314.html reorder the patches update the introduction of xen_module commands in docs/grub.texi
v2: http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00282.html add "--nounzip" option support in xen_module use "feature_xen_boot" instead of "grub_xen_boot" update the introduction of xen boot commands in docs/grub.texi
v1 :first upstream patchset: http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00264.html
Fu Wei (4): i386,xen: Add xen_hypervisor and xen_module aliases for i386 arm64: add "--nounzip" option support in xen_module command * util/grub.d/20_linux_xen.in: Add xen_boot command support arm64: update the introduction of xen boot commands in docs/grub.texi
docs/grub.texi | 32 +++++++++----------------------- grub-core/loader/arm64/xen_boot.c | 17 +++++++++++++++++ grub-core/loader/i386/xen.c | 7 +++++++ grub-core/normal/main.c | 2 +- util/grub.d/20_linux_xen.in | 13 ++++++++++--- 5 files changed, 44 insertions(+), 27 deletions(-)
From: Fu Wei fu.wei@linaro.org
Signed-off-by: Fu Wei fu.wei@linaro.org --- grub-core/loader/i386/xen.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/grub-core/loader/i386/xen.c b/grub-core/loader/i386/xen.c index c4d9689..15b0727 100644 --- a/grub-core/loader/i386/xen.c +++ b/grub-core/loader/i386/xen.c @@ -689,6 +689,7 @@ fail: }
static grub_command_t cmd_xen, cmd_initrd, cmd_module, cmd_multiboot; +static grub_command_t cmd_xen_hypervisor, cmd_xen_module;
GRUB_MOD_INIT (xen) { @@ -696,10 +697,14 @@ GRUB_MOD_INIT (xen) 0, N_("Load Linux.")); cmd_multiboot = grub_register_command ("multiboot", grub_cmd_xen, 0, N_("Load Linux.")); + cmd_xen_hypervisor = grub_register_command ("xen_hypervisor", grub_cmd_xen, + 0, N_("Load Linux.")); cmd_initrd = grub_register_command ("initrd", grub_cmd_initrd, 0, N_("Load initrd.")); cmd_module = grub_register_command ("module", grub_cmd_module, 0, N_("Load module.")); + cmd_xen_module = grub_register_command ("xen_module", grub_cmd_module, + 0, N_("Load module.")); my_mod = mod; }
@@ -709,4 +714,6 @@ GRUB_MOD_FINI (xen) grub_unregister_command (cmd_initrd); grub_unregister_command (cmd_multiboot); grub_unregister_command (cmd_module); + grub_unregister_command (cmd_xen_module); + grub_unregister_command (cmd_xen_hypervisor); }
From: Fu Wei fu.wei@linaro.org
This patch adds "--nounzip" option support in order to be compatible with the module command of i386, then we can simplify grub-mkconfig support code.
Signed-off-by: Fu Wei fu.wei@linaro.org --- grub-core/loader/arm64/xen_boot.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/grub-core/loader/arm64/xen_boot.c b/grub-core/loader/arm64/xen_boot.c index a914eb8..0878364 100644 --- a/grub-core/loader/arm64/xen_boot.c +++ b/grub-core/loader/arm64/xen_boot.c @@ -20,6 +20,7 @@ #include <grub/charset.h> #include <grub/command.h> #include <grub/err.h> +#include <grub/env.h> #include <grub/file.h> #include <grub/fdt.h> #include <grub/list.h> @@ -379,6 +380,20 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),
struct xen_boot_binary *module = NULL; grub_file_t file = 0; + int nounzip = 0; + + if (!argc) + { + grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected")); + goto fail; + } + + if (grub_strcmp (argv[0], "--nounzip") == 0) + { + argv++; + argc--; + nounzip = 1; + }
if (!argc) { @@ -403,6 +418,8 @@ grub_cmd_xen_module (grub_command_t cmd __attribute__((unused)),
grub_dprintf ("xen_loader", "Init module and node info\n");
+ if (nounzip) + grub_file_filter_disable_compression (); file = grub_file_open (argv[0]); if (!file) goto fail;
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" };
GRUB_MOD_INIT(normal) diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in index c48af94..6a88a39 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
Hi Fu Wei,
On 06/07/16 18:53, 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" };
GRUB_MOD_INIT(normal)
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in index c48af94..6a88a39 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}
What is the coding style for grub? This line is using hard tabs, but the previous one are using soft tab.
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
Regards,
Hi Julien,
On 12 July 2016 at 18:21, Julien Grall julien.grall@arm.com wrote:
Hi Fu Wei,
On 06/07/16 18:53, 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" };
GRUB_MOD_INIT(normal)
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in index c48af94..6a88a39 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}
What is the coding style for grub? This line is using hard tabs, but the previous one are using soft tab.
Thanks for pointing it out, I thinks it should be soft tab, reason: (1) GRUB follows the GNU Coding Standards (2) according to "GNU Hello"( an example of how to follow the GNU coding standards ), the shell scripts are using soft tab.
So I will use soft tab in v6, please check
Thanks
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}
EOF fi sed "s/^/$submenu_indentation/" << EOF\${module_loader} --nounzip ${rel_dirname}/${initrd}
Regards,
-- Julien Grall
From: Fu Wei fu.wei@linaro.org
delete: xen_linux, xen_initrd, xen_xsm add: xen_module
This update bases on commit 0edd750e50698854068358ea53528100a9192902 Author: Vladimir Serbinenko phcoder@gmail.com Date: Fri Jan 22 10:18:47 2016 +0100
xen_boot: Remove obsolete module type distinctions.
Also bases on the module loading mechanism of Xen code: 488c2a8 docs/arm64: clarify the documention for loading XSM support 67831c4 docs/arm64: update the documentation for loading XSM support ca32012 xen/arm64: check XSM Magic from the second unknown module.
Signed-off-by: Fu Wei fu.wei@linaro.org --- docs/grub.texi | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..85c913e 100644 --- a/docs/grub.texi +++ b/docs/grub.texi @@ -3861,9 +3861,7 @@ you forget a command, you can run the command @command{help} * videoinfo:: List available video modes @comment * xen_*:: Xen boot commands * xen_hypervisor:: Load xen hypervisor binary -* xen_linux:: Load dom0 kernel for xen hypervisor -* xen_initrd:: Load dom0 initrd for dom0 kernel -* xen_xsm:: Load xen security module for xen hypervisor +* xen_module:: Load xen modules for xen hypervisor @end menu
@@ -5141,30 +5139,18 @@ verbatim as the @dfn{kernel command-line}. Any other binaries must be reloaded after using this command. @end deffn
-@node xen_linux -@subsection xen_linux +@node xen_module +@subsection xen_module
-@deffn Command xen_linux file [arguments] -Load a dom0 kernel image for xen hypervisor at the booting process of xen. +@deffn Command xen_module [--nounzip] file [arguments] +Load a module for xen hypervisor at the booting process of xen. The rest of the line is passed verbatim as the module command line. +Modules should be loaded in the following order: + - dom0 kernel image + - dom0 ramdisk if present + - XSM policy if present @end deffn
-@node xen_initrd -@subsection xen_initrd - -@deffn Command xen_initrd file -Load a initrd image for dom0 kernel at the booting process of xen. -@end deffn - -@node xen_xsm -@subsection xen_xsm - -@deffn Command xen_xsm file -Load a xen security module for xen hypervisor at the booting process of xen. -See @uref{http://wiki.xen.org/wiki/XSM%7D for more detail. -@end deffn - - @node Networking commands @section The list of networking commands
Hi Fu Wei,
On 06/07/16 18:53, fu.wei@linaro.org wrote:
From: Fu Wei fu.wei@linaro.org
delete: xen_linux, xen_initrd, xen_xsm add: xen_module
This update bases on commit 0edd750e50698854068358ea53528100a9192902 Author: Vladimir Serbinenko phcoder@gmail.com Date: Fri Jan 22 10:18:47 2016 +0100
xen_boot: Remove obsolete module type distinctions.
Also bases on the module loading mechanism of Xen code: 488c2a8 docs/arm64: clarify the documention for loading XSM support 67831c4 docs/arm64: update the documentation for loading XSM support ca32012 xen/arm64: check XSM Magic from the second unknown module.
Signed-off-by: Fu Wei fu.wei@linaro.org
Reviewed-by: Julien Grall julien.grall@arm.com
Regards,