• Matt Fleming's avatar
    efi: Add efi= parameter parsing to the EFI boot stub · 5a17dae4
    Matt Fleming authored
    We need a way to customize the behaviour of the EFI boot stub, in
    particular, we need a way to disable the "chunking" workaround, used
    when reading files from the EFI System Partition.
    
    One of my machines doesn't cope well when reading files in 1MB chunks to
    a buffer above the 4GB mark - it appears that the "chunking" bug
    workaround triggers another firmware bug. This was only discovered with
    commit 4bf7111f ("x86/efi: Support initrd loaded above 4G"), and
    that commit is perfectly valid. The symptom I observed was a corrupt
    initrd rather than any kind of crash.
    
    efi= is now used to specify EFI parameters in two very different
    execution environments, the EFI boot stub and during kernel boot.
    
    There is also a slight performance optimization by enabling efi=nochunk,
    but that's offset by the fact that you're more likely to run into
    firmware issues, at least on x86. This is the rationale behind leaving
    the workaround enabled by default.
    
    Also provide some documentation for EFI_READ_CHUNK_SIZE and why we're
    using the current value of 1MB.
    Tested-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Roy Franz <roy.franz@linaro.org>
    Cc: Maarten Lankhorst <m.b.lankhorst@gmail.com>
    Cc: Leif Lindholm <leif.lindholm@linaro.org>
    Cc: Borislav Petkov <bp@suse.de>
    Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
    5a17dae4
eboot.c 35.7 KB