On Tue, May 9, 2017, 11:02 Fu Wei <fu.wei@linaro.org> wrote:
Hi Vladimir

On 9 May 2017 at 14:59, Vladimir 'phcoder' Serbinenko <phcoder@gmail.com> wrote:
>
>
> Le Tue, May 2, 2017 à 9:06 AM, <fu.wei@linaro.org> a écrit :
>>
>> From: Fu Wei <fu.wei@linaro.org>
>>
>> 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>
>> ---
>>  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?
Yes, you can. Another possibility, probably better, is to check actual file type, see grub-file

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