grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v7 2/3] * util/grub.d/20_linux_xen.in: Add xen_boot command s


From: Fu Wei
Subject: Re: [PATCH v7 2/3] * util/grub.d/20_linux_xen.in: Add xen_boot command support for aarch64
Date: Tue, 9 May 2017 17:39:16 +0800

Hi Vladimir

On 9 May 2017 at 17:02, Fu Wei <address@hidden> wrote:
> Hi Vladimir
>
> On 9 May 2017 at 14:59, Vladimir 'phcoder' Serbinenko <address@hidden> wrote:
>>
>>
>> Le Tue, May 2, 2017 à 9:06 AM, <address@hidden> a écrit :
>>>
>>> From: Fu Wei <address@hidden>
>>>
>>> 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 <address@hidden>
>>> ---
>>>  util/grub.d/20_linux_xen.in | 13 ++++++++++---
>>>  1 file changed, 10 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
>>> index c48af94..9777719 100644
>>> --- a/util/grub.d/20_linux_xen.in
>>> +++ b/util/grub.d/20_linux_xen.in
>>> @@ -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,13 @@ 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
>>> +    if [ "x$machine" != xaarch64 ]; then
>>
>> Machine of grub-mkconfig doesn't necessarily match the kernel. Think of
>> chroot or of having 32-bit userspace with 64-bit kernel. Better to do this
>> on runtime. I know, it's not very nice but the whole grub-mkconfig is
>> trouble that needs redesign that I'm working on.
>
> So if we need to do this at run time(in grub shell), can I use
> "grub_cpu" variable instead?

Dose this patch make sense to you?

diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
index c48af94..0c26cbb 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\$grub_cpu" != xarm64 ]; 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


>
> Thanks!
>
>>>
>>> +       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
>>> --
>>> 2.9.3
>>>
>>
>
>
>
> --
> Best regards,
>
> Fu Wei
> Software Engineer
> Red Hat



-- 
Best regards,

Fu Wei
Software Engineer
Red Hat



reply via email to

[Prev in Thread] Current Thread [Next in Thread]