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