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: v3: 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 | 33 ++++++++++----------------------- 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, 45 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 8ae43d7..d63e631 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 46045db..998ac21 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
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.
Signed-off-by: Fu Wei fu.wei@linaro.org --- docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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. +On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added. +The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional) @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
26.02.2016 14:13, fu.wei@linaro.org пишет:
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.
Signed-off-by: Fu Wei fu.wei@linaro.org
docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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.
==
+On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added.
I think it is better to skip it entirely. It is not really correct - neither multiboot protocol provides any module identification (Xen probes module types), nor is i386 using multiboot2, nor can all modules be probed, so order still matters. To avoid confusion I'd simply replaced the above three lines with
Modules should be loaded in the following order:
+The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional)
This covers both supported platforms without going into too deep details; if you and Vladimir are OK, I'll commit with this change.
@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 Andrei
On 28 February 2016 at 01:26, Andrei Borzenkov arvidjaar@gmail.com wrote:
26.02.2016 14:13, fu.wei@linaro.org пишет:
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.
Signed-off-by: Fu Wei fu.wei@linaro.org
docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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.
==
+On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added.
I think it is better to skip it entirely. It is not really correct - neither multiboot protocol provides any module identification (Xen probes module types), nor is i386 using multiboot2, nor can all modules be probed, so order still matters. To avoid confusion I'd simply replaced the above three lines with
Modules should be loaded in the following order:
+The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional)
This covers both supported platforms without going into too deep details; if you and Vladimir are OK, I'll commit with this change.
Thank you very much! Sorry I am not familiar with xen on i386, so maybe I misunderstand this. So please commit with your change, Thanks for your correction :-)
@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 Andrei,
On 28 February 2016 at 00:44, Fu Wei fu.wei@linaro.org wrote:
Hi Andrei
On 28 February 2016 at 01:26, Andrei Borzenkov arvidjaar@gmail.com wrote:
26.02.2016 14:13, fu.wei@linaro.org пишет:
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.
Signed-off-by: Fu Wei fu.wei@linaro.org
docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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.
==
+On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added.
I think it is better to skip it entirely. It is not really correct - neither multiboot protocol provides any module identification (Xen probes module types), nor is i386 using multiboot2, nor can all modules be probed, so order still matters. To avoid confusion I'd simply replaced the above three lines with
Modules should be loaded in the following order:
+The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional)
This covers both supported platforms without going into too deep details; if you and Vladimir are OK, I'll commit with this change.
Thank you very much! Sorry I am not familiar with xen on i386, so maybe I misunderstand this. So please commit with your change, Thanks for your correction :-)
I just fetched the mainline GRUB, i would like to know why this patchset haven't been applied? Anything I need to do(improve it or post a new patchset according to your suggestion) for this patchset?
Great thanks :-)
@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
-- Best regards,
Fu Wei Software Engineer Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch Ph: +86 21 61221326(direct) Ph: +86 186 2020 4684 (mobile) Room 1512, Regus One Corporate Avenue,Level 15, One Corporate Avenue,222 Hubin Road,Huangpu District, Shanghai,China 200021
07.03.2016 11:22, Fu Wei пишет:
Hi Andrei,
On 28 February 2016 at 00:44, Fu Wei fu.wei@linaro.org wrote:
Hi Andrei
On 28 February 2016 at 01:26, Andrei Borzenkov arvidjaar@gmail.com wrote:
26.02.2016 14:13, fu.wei@linaro.org пишет:
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.
Signed-off-by: Fu Wei fu.wei@linaro.org
docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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.
==
+On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added.
I think it is better to skip it entirely. It is not really correct - neither multiboot protocol provides any module identification (Xen probes module types), nor is i386 using multiboot2, nor can all modules be probed, so order still matters. To avoid confusion I'd simply replaced the above three lines with
Modules should be loaded in the following order:
+The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional)
This covers both supported platforms without going into too deep details; if you and Vladimir are OK, I'll commit with this change.
Thank you very much! Sorry I am not familiar with xen on i386, so maybe I misunderstand this. So please commit with your change, Thanks for your correction :-)
I just fetched the mainline GRUB, i would like to know why this patchset haven't been applied? Anything I need to do(improve it or post a new patchset according to your suggestion) for this patchset?
Sorry for delay. It is not really about your patchset, but we need some decision about loading additional modules/lack of initrd on ARM. Until then I'd rather avoid committing to any high-level configuration support that will require even more backward compatible hacks later.
As it stands now either Xen needs to support autodetection or we need to revert to providing module type explicitly.
Hi Andrei,
On 8 March 2016 at 14:54, Andrei Borzenkov arvidjaar@gmail.com wrote:
07.03.2016 11:22, Fu Wei пишет:
Hi Andrei,
On 28 February 2016 at 00:44, Fu Wei fu.wei@linaro.org wrote:
Hi Andrei
On 28 February 2016 at 01:26, Andrei Borzenkov arvidjaar@gmail.com wrote:
26.02.2016 14:13, fu.wei@linaro.org пишет:
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.
Signed-off-by: Fu Wei fu.wei@linaro.org
docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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.
==
+On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added.
I think it is better to skip it entirely. It is not really correct - neither multiboot protocol provides any module identification (Xen probes module types), nor is i386 using multiboot2, nor can all modules be probed, so order still matters. To avoid confusion I'd simply replaced the above three lines with
Modules should be loaded in the following order:
+The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional)
This covers both supported platforms without going into too deep details; if you and Vladimir are OK, I'll commit with this change.
Thank you very much! Sorry I am not familiar with xen on i386, so maybe I misunderstand this. So please commit with your change, Thanks for your correction :-)
I just fetched the mainline GRUB, i would like to know why this patchset haven't been applied? Anything I need to do(improve it or post a new patchset according to your suggestion) for this patchset?
Sorry for delay. It is not really about your patchset, but we need some decision about loading additional modules/lack of initrd on ARM. Until then I'd rather avoid committing to any high-level configuration support that will require even more backward compatible hacks later.
As it stands now either Xen needs to support autodetection or we need to revert to providing module type explicitly.
So speaking of loading additional modules/lack of initrd on ARM, I thinks that will (only) affect loading XSM. For this, I have discussed of that with Julien, I think : (1) the first module must be kernel (2) the second module must be initrd, if we have initrd (3) Start from the 2nd module, XEN will detect that if the module is a XSM by the XSM binary signature. if we get XSM as the second module, that means we have not initrd.
please correct me if I misunderstand it
:-)
08.03.2016 19:37, Fu Wei пишет:
Hi Andrei,
On 8 March 2016 at 14:54, Andrei Borzenkov arvidjaar@gmail.com wrote:
07.03.2016 11:22, Fu Wei пишет:
Hi Andrei,
On 28 February 2016 at 00:44, Fu Wei fu.wei@linaro.org wrote:
Hi Andrei
On 28 February 2016 at 01:26, Andrei Borzenkov arvidjaar@gmail.com wrote:
26.02.2016 14:13, fu.wei@linaro.org пишет:
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.
Signed-off-by: Fu Wei fu.wei@linaro.org
docs/grub.texi | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi index 82f6fa4..3fbdd99 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,19 @@ 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.
==
+On i386, the modules will be identified by Multiboot(2) protocol. +On arm64, each module will be identified by the order in which the +modules are added.
I think it is better to skip it entirely. It is not really correct - neither multiboot protocol provides any module identification (Xen probes module types), nor is i386 using multiboot2, nor can all modules be probed, so order still matters. To avoid confusion I'd simply replaced the above three lines with
Modules should be loaded in the following order:
+The 1st module: dom0 kernel image +The 2nd module: dom0 ramdisk (optional)
This covers both supported platforms without going into too deep details; if you and Vladimir are OK, I'll commit with this change.
Thank you very much! Sorry I am not familiar with xen on i386, so maybe I misunderstand this. So please commit with your change, Thanks for your correction :-)
I just fetched the mainline GRUB, i would like to know why this patchset haven't been applied? Anything I need to do(improve it or post a new patchset according to your suggestion) for this patchset?
Sorry for delay. It is not really about your patchset, but we need some decision about loading additional modules/lack of initrd on ARM. Until then I'd rather avoid committing to any high-level configuration support that will require even more backward compatible hacks later.
As it stands now either Xen needs to support autodetection or we need to revert to providing module type explicitly.
So speaking of loading additional modules/lack of initrd on ARM, I thinks that will (only) affect loading XSM. For this, I have discussed of that with Julien, I think : (1) the first module must be kernel (2) the second module must be initrd, if we have initrd (3) Start from the 2nd module, XEN will detect that if the module is a XSM by the XSM binary signature. if we get XSM as the second module, that means we have not initrd.
If that's the plan, excellent. Vladimir, is it OK to commit then?
please correct me if I misunderstand it
:-)
Hi,
On 08/03/2016 23:37, Fu Wei wrote:
On 8 March 2016 at 14:54, Andrei Borzenkov arvidjaar@gmail.com wrote: So speaking of loading additional modules/lack of initrd on ARM, I thinks that will (only) affect loading XSM. For this, I have discussed of that with Julien, I think : (1) the first module must be kernel (2) the second module must be initrd, if we have initrd (3) Start from the 2nd module, XEN will detect that if the module is a XSM by the XSM binary signature. if we get XSM as the second module, that means we have not initrd.
We need to update Xen for point (3). Fu Wei, could you send a patch for this?
please correct me if I misunderstand it
I'm fine with this plan, it matches the x86 behavior.
Cheers,
Hi Julien,
On 9 March 2016 at 15:10, Julien Grall julien.grall@arm.com wrote:
Hi,
On 08/03/2016 23:37, Fu Wei wrote:
On 8 March 2016 at 14:54, Andrei Borzenkov arvidjaar@gmail.com wrote: So speaking of loading additional modules/lack of initrd on ARM, I thinks that will (only) affect loading XSM. For this, I have discussed of that with Julien, I think : (1) the first module must be kernel (2) the second module must be initrd, if we have initrd (3) Start from the 2nd module, XEN will detect that if the module is a XSM by the XSM binary signature. if we get XSM as the second module, that means we have not initrd.
We need to update Xen for point (3). Fu Wei, could you send a patch for this?
Yes, I think I can do that.
please correct me if I misunderstand it
I'm fine with this plan, it matches the x86 behavior.
Great thanks for your review :-)
Cheers,
-- Julien Grall
Hi all,
On 9 March 2016 at 16:22, Fu Wei fu.wei@linaro.org wrote:
Hi Julien,
On 9 March 2016 at 15:10, Julien Grall julien.grall@arm.com wrote:
Hi,
On 08/03/2016 23:37, Fu Wei wrote:
On 8 March 2016 at 14:54, Andrei Borzenkov arvidjaar@gmail.com wrote: So speaking of loading additional modules/lack of initrd on ARM, I thinks that will (only) affect loading XSM. For this, I have discussed of that with Julien, I think : (1) the first module must be kernel (2) the second module must be initrd, if we have initrd (3) Start from the 2nd module, XEN will detect that if the module is a XSM by the XSM binary signature. if we get XSM as the second module, that means we have not initrd.
We need to update Xen for point (3). Fu Wei, could you send a patch for this?
Yes, I think I can do that.
I have posted the patch for this:
http://lists.xen.org/archives/html/xen-devel/2016-03/msg02430.html
please correct me if I misunderstand it
I'm fine with this plan, it matches the x86 behavior.
Great thanks for your review :-)
Cheers,
-- Julien Grall
-- Best regards,
Fu Wei Software Engineer Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch Ph: +86 21 61221326(direct) Ph: +86 186 2020 4684 (mobile) Room 1512, Regus One Corporate Avenue,Level 15, One Corporate Avenue,222 Hubin Road,Huangpu District, Shanghai,China 200021
Hi all
On 18 March 2016 at 15:53, Fu Wei fu.wei@linaro.org wrote:
Hi all,
On 9 March 2016 at 16:22, Fu Wei fu.wei@linaro.org wrote:
Hi Julien,
On 9 March 2016 at 15:10, Julien Grall julien.grall@arm.com wrote:
Hi,
On 08/03/2016 23:37, Fu Wei wrote:
On 8 March 2016 at 14:54, Andrei Borzenkov arvidjaar@gmail.com wrote: So speaking of loading additional modules/lack of initrd on ARM, I thinks that will (only) affect loading XSM. For this, I have discussed of that with Julien, I think : (1) the first module must be kernel (2) the second module must be initrd, if we have initrd (3) Start from the 2nd module, XEN will detect that if the module is a XSM by the XSM binary signature. if we get XSM as the second module, that means we have not initrd.
We need to update Xen for point (3). Fu Wei, could you send a patch for this?
Yes, I think I can do that.
I have posted the patch for this:
http://lists.xen.org/archives/html/xen-devel/2016-03/msg02430.html
git log ca32012341f3de7d3975407fb963e6028f0d0c8b commit ca32012341f3de7d3975407fb963e6028f0d0c8b Author: Fu Wei fu.wei@linaro.org Date: Wed Apr 6 00:46:36 2016 +0800
xen/arm64: check XSM Magic from the second unknown module.
This patch adds a has_xsm_magic helper function for detecting XSM from the second unknown module.
If Xen can't get the kind of module from compatible, we guess the kind of these unknowns respectively: (1) The first unknown must be kernel. (2) Detect the XSM Magic from the 2nd unknown: a. If it's XSM, set the kind as XSM, and that also means we won't load ramdisk; b. if it's not XSM, set the kind as ramdisk. So if user want to load ramdisk, it must be the 2nd unknown. We also detect the XSM Magic for the following unknowns, then set its kind according to the return value of has_xsm_magic.
By this way, arm64 behavior can be compatible to x86 and can simplify multi-arch bootloader such as GRUB.
Signed-off-by: Fu Wei fu.wei@linaro.org Acked-by: Daniel De Graaf dgdegra@tycho.nsa.gov Acked-by: Julien Grall julien.grall@arm.com
Since the patch for this has been merged into the staging branch of xen, Could some one help to review this patch or maybe merge this patchset into GRUB if that is OK for all of you :-)
please correct me if I misunderstand it
I'm fine with this plan, it matches the x86 behavior.
Great thanks for your review :-)
Cheers,
-- Julien Grall
-- Best regards,
Fu Wei Software Engineer Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch Ph: +86 21 61221326(direct) Ph: +86 186 2020 4684 (mobile) Room 1512, Regus One Corporate Avenue,Level 15, One Corporate Avenue,222 Hubin Road,Huangpu District, Shanghai,China 200021
-- Best regards,
Fu Wei Software Engineer Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch Ph: +86 21 61221326(direct) Ph: +86 186 2020 4684 (mobile) Room 1512, Regus One Corporate Avenue,Level 15, One Corporate Avenue,222 Hubin Road,Huangpu District, Shanghai,China 200021