On Wed, Jan 28, 2015 at 06:42:01AM +0300, Andrei Borzenkov wrote:
>В Wed, 28 Jan 2015 00:56:30 +0000
>Steve McIntyre <st...@einval.com> пишет:
>
>> 
>> =====================================================================
>> 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 <st...@einval.com>
>> ---
>>  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.                                st...@einval.com
Welcome my son, welcome to the machine.


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to