grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] Add support for running a 64-bit Linux kernel on a 32-bit EF


From: Steve McIntyre
Subject: Re: [PATCH] Add support for running a 64-bit Linux kernel on a 32-bit EFI
Date: Wed, 28 Jan 2015 23:42:14 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Jan 28, 2015 at 06:42:01AM +0300, Andrei Borzenkov wrote:
>В Wed, 28 Jan 2015 00:56:30 +0000
>Steve McIntyre <address@hidden> пишет:
>
>> 
>> =====================================================================
>> Some platforms might be capable of running a 64-bit Linux kernel but
>> only use a 32-bit EFI.  To support such systems, it is necessary to
>> work out the size of the firmware rather than just the size of the
>> kernel. To enable that, there is now an extra EFI sysfs file to
>> describe the underlying firmware.  Read that if possible, otherwise
>> fall back to the kernel type as before.
>> 
>> Signed-off-by: Steve McIntyre <address@hidden>
>> ---
>>  grub-core/osdep/linux/platform.c |   38 
>> +++++++++++++++++++++++++++++++++++++-
>>  1 file changed, 37 insertions(+), 1 deletion(-)
>> 
>> diff --git a/grub-core/osdep/linux/platform.c 
>> b/grub-core/osdep/linux/platform.c
>> index 4b9f6ef..5668ae5 100644
>> --- a/grub-core/osdep/linux/platform.c
>> +++ b/grub-core/osdep/linux/platform.c
>> @@ -60,6 +60,42 @@ is_64_kernel (void)
>>    return strcmp (un.machine, "x86_64") == 0;
>>  }
>>  
>> +static int
>> +read_platform_size (void)
>> +{
>> +  FILE *fp;
>> +  char *buf = NULL;
>> +  size_t len = 0;
>> +  int ret = 0;
>> +
>> +  /* Newer kernels can tell us directly about the size of the
>> +   * underlying firmware - let's see if that interface is there. */
>> +  fp = grub_util_fopen ("/sys/firmware/efi/fw_platform_size", "r");
>> +  if (fp != NULL)
>> +  {
>> +    if (getline (&buf, &len, fp) > 0)
>
>size >= 2

Yup.

>> +      {
>> +    if (strncmp (buf, "32", 2) == 0)
>> +      ret = 32;
>> +    else if (strncmp (buf, "64", 2) == 0)
>> +      ret = 64;
>> +      }
>> +    free (buf);
>> +    fclose (fp);
>> +  }
>> +
>> +  if (ret == 0)
>> +    /* Unrecognised - fall back to matching the kernel size instead */
>> +    {
>
>I usually prefer comments inside braces and indented accordingly.

OK, cool.

>Could you send it suitable for git am? Mentioning platforms in commit
>message would be useful for reference. BTW, re subject - this is
>about installing 32 bit EFI grub on 64 bit Linux, not running, right?
>It already should be able to run kernel if installed appropriately
>manually.

Correct, yes.

v2 coming shortly.

-- 
Steve McIntyre, Cambridge, UK.                                address@hidden
Welcome my son, welcome to the machine.




reply via email to

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