#
14c574f3 |
| 18-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/gop: Add an option to list out the available GOP modes
Add video=efifb:list option to list the modes that are available.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.
efi/gop: Add an option to list out the available GOP modes
Add video=efifb:list option to list the modes that are available.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200518190716.751506-20-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
9b47c527 |
| 18-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Add definitions for console input and events
Add the required typedefs etc for using con_in's simple text input protocol, and for using the boottime event services.
Also add the protot
efi/libstub: Add definitions for console input and events
Add the required typedefs etc for using con_in's simple text input protocol, and for using the boottime event services.
Also add the prototype for the "stall" boot service.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200518190716.751506-19-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
23d5b73f |
| 20-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Implement printk-style logging
Use the efi_printk function in efi_info/efi_err, and add efi_debug. This allows formatted output at different log levels.
Add the notion of a loglevel in
efi/libstub: Implement printk-style logging
Use the efi_printk function in efi_info/efi_err, and add efi_debug. This allows formatted output at different log levels.
Add the notion of a loglevel instead of just quiet/not-quiet, and parse the efi=debug kernel parameter in addition to quiet.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200520170223.GA3333632@rani.riverdale.lan/ Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
2c7d1e30 |
| 18-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Add a basic printf implementation
Copy vsprintf from arch/x86/boot/printf.c to get a simple printf implementation.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lo
efi/libstub: Add a basic printf implementation
Copy vsprintf from arch/x86/boot/printf.c to get a simple printf implementation.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200518190716.751506-5-nivedita@alum.mit.edu [ardb: add some missing braces in if...else clauses] Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
cb8c90a0 |
| 18-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Rename efi_[char16_]printk to efi_[char16_]puts
These functions do not support formatting, unlike printk. Rename them to puts to make that clear.
Move the implementations of these two
efi/libstub: Rename efi_[char16_]printk to efi_[char16_]puts
These functions do not support formatting, unlike printk. Rename them to puts to make that clear.
Move the implementations of these two functions next to each other.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200518190716.751506-3-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
0b767353 |
| 18-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Include dependencies of efistub.h
Add #include directives for include files that efistub.h depends on, instead of relying on them having been included by the C source files prior to efi
efi/libstub: Include dependencies of efistub.h
Add #include directives for include files that efistub.h depends on, instead of relying on them having been included by the C source files prior to efistub.h.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200518190716.751506-2-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
Revision tags: v5.4.41, v5.4.40 |
|
#
fd626195 |
| 07-May-2020 |
Lenny Szubowicz <lszubowi@redhat.com> |
efi/libstub/x86: Avoid EFI map buffer alloc in allocate_e820()
In allocate_e820(), call the EFI get_memory_map() service directly instead of indirectly via efi_get_memory_map(). This avoids allocati
efi/libstub/x86: Avoid EFI map buffer alloc in allocate_e820()
In allocate_e820(), call the EFI get_memory_map() service directly instead of indirectly via efi_get_memory_map(). This avoids allocation of a buffer and return of the full EFI memory map, which is not needed here and would otherwise need to be freed.
Routine allocate_e820() only needs to know how many EFI memory descriptors there are in the map to allocate an adequately sized e820ext buffer, if it's needed. Note that since efi_get_memory_map() returns a memory map buffer sized with extra headroom, allocate_e820() now needs to explicitly factor that into the e820ext size calculation.
Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com> Suggested-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
Revision tags: v5.4.39 |
|
#
0b8d9fc9 |
| 05-May-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: Make efi_printk() input argument const char*
To help the compiler figure out that efi_printk() will not modify the string it is given, make the input argument type const char*.
While a
efi/libstub: Make efi_printk() input argument const char*
To help the compiler figure out that efi_printk() will not modify the string it is given, make the input argument type const char*.
While at it, simplify the implementation as well.
Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
de8c5520 |
| 04-May-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Fix mixed mode boot issue after macro refactor
Commit
22090f84bc3f ("efi/libstub: unify EFI call wrappers for non-x86")
refactored the macros that are used to provide wrappers for m
efi/libstub: Fix mixed mode boot issue after macro refactor
Commit
22090f84bc3f ("efi/libstub: unify EFI call wrappers for non-x86")
refactored the macros that are used to provide wrappers for mixed-mode calls on x86, allowing us to boot a 64-bit kernel on 32-bit firmware.
Unfortunately, this broke mixed mode boot due to the fact that efi_is_native() is not a macro on x86.
All of these macros should go together, so rather than testing each one to see if it is defined, condition the generic macro definitions on a new ARCH_HAS_EFISTUB_WRAPPERS, and remove the wrapper definitions on x86 as well if CONFIG_EFI_MIXED is not enabled.
Fixes: 22090f84bc3f ("efi/libstub: unify EFI call wrappers for non-x86") Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200504150248.62482-1-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
Revision tags: v5.4.38, v5.4.37 |
|
#
f61900fd |
| 30-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Unify initrd loading across architectures
Factor out the initrd loading into a common function that can be called both from the generic efi-stub.c and the x86-specific x86-stub.c.
Sign
efi/libstub: Unify initrd loading across architectures
Factor out the initrd loading into a common function that can be called both from the generic efi-stub.c and the x86-specific x86-stub.c.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200430182843.2510180-10-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
793473c2 |
| 30-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Move pr_efi/pr_efi_err into efi namespace
Rename pr_efi to efi_info and pr_efi_err to efi_err to make it more obvious that they are part of the EFI stub and not generic printk infra.
S
efi/libstub: Move pr_efi/pr_efi_err into efi namespace
Rename pr_efi to efi_info and pr_efi_err to efi_err to make it more obvious that they are part of the EFI stub and not generic printk infra.
Suggested-by: Joe Perches <joe@perches.com> Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200430182843.2510180-4-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
eed4e019 |
| 30-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/libstub: Add a helper function to split 64-bit values
In several places 64-bit values need to be split up into two 32-bit fields, in order to be backward-compatible with the old 32-bit ABIs.
In
efi/libstub: Add a helper function to split 64-bit values
In several places 64-bit values need to be split up into two 32-bit fields, in order to be backward-compatible with the old 32-bit ABIs.
Instead of open-coding this, add a helper function to set a 64-bit value as two 32-bit fields.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200430182843.2510180-3-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
Revision tags: v5.4.36, v5.4.35, v5.4.34, v5.4.33 |
|
#
980771f6 |
| 16-Apr-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: Drop __pure getters for EFI stub options
The practice of using __pure getter functions to access global variables in the EFI stub dates back to the time when we had to carefully prevent
efi/libstub: Drop __pure getters for EFI stub options
The practice of using __pure getter functions to access global variables in the EFI stub dates back to the time when we had to carefully prevent GOT entries from being emitted, because we could not rely on the toolchain to do this for us.
Today, we use the hidden visibility pragma for all EFI stub source files, which now all live in the same subdirectory, and we apply a sanity check on the objects, so we can get rid of these getter functions and simply refer to global data objects directly.
So switch over the remaining boolean variables carrying options set on the kernel command line.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
ccc27ae7 |
| 16-Apr-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: Drop __pure getter for efi_system_table
The practice of using __pure getter functions to access global variables in the EFI stub dates back to the time when we had to carefully prevent
efi/libstub: Drop __pure getter for efi_system_table
The practice of using __pure getter functions to access global variables in the EFI stub dates back to the time when we had to carefully prevent GOT entries from being emitted, because we could not rely on the toolchain to do this for us.
Today, we use the hidden visibility pragma for all EFI stub source files, which now all live in the same subdirectory, and we apply a sanity check on the objects, so we can get rid of these getter functions and simply refer to global data objects directly.
Start with efi_system_table(), and convert it into a global variable. While at it, make it a pointer-to-const, because we can.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
54439370 |
| 16-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi: Kill __efistub_global
Now that both arm and x86 are using the linker script to place the EFI stub's global variables in the correct section, remove __efistub_global.
Signed-off-by: Arvind Sank
efi: Kill __efistub_global
Now that both arm and x86 are using the linker script to place the EFI stub's global variables in the correct section, remove __efistub_global.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20200416151227.3360778-4-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
26a92425 |
| 16-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/x86: Remove __efistub_global and add relocation check
Instead of using __efistub_global to force variables into the .data section, leave them in the .bss but pull the EFI stub's .bss section int
efi/x86: Remove __efistub_global and add relocation check
Instead of using __efistub_global to force variables into the .data section, leave them in the .bss but pull the EFI stub's .bss section into .data in the linker script for the compressed kernel.
Add relocation checking for x86 as well to catch non-PC-relative relocations that require runtime processing, since the EFI stub does not do any runtime relocation processing.
This will catch, for example, data relocations created by static initializers of pointers.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200416151227.3360778-3-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
420b6d00 |
| 16-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/arm: Remove __efistub_global annotation
Instead of using __efistub_global to force variables into the .data section, leave them in the .bss but pull the EFI stub's .bss section into .data in the
efi/arm: Remove __efistub_global annotation
Instead of using __efistub_global to force variables into the .data section, leave them in the .bss but pull the EFI stub's .bss section into .data in the linker script for the compressed kernel.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20200416151227.3360778-2-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
685d8164 |
| 13-Apr-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: Move efi_relocate_kernel() into separate source file
Move efi_relocate_kernel() into a separate source file, so that it only gets pulled into builds for architectures that use it. Since
efi/libstub: Move efi_relocate_kernel() into separate source file
Move efi_relocate_kernel() into a separate source file, so that it only gets pulled into builds for architectures that use it. Since efi_relocate_kernel() is the only user of efi_low_alloc(), let's move that over as well.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
Revision tags: v5.4.32, v5.4.31, v5.4.30, v5.4.29, v5.6 |
|
#
43b1df0e |
| 27-Mar-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: Add API function to allocate aligned memory
Break out the code to create an aligned page allocation from mem.c and move it into a function efi_allocate_pages_aligned() in alignedmem.c.
efi/libstub: Add API function to allocate aligned memory
Break out the code to create an aligned page allocation from mem.c and move it into a function efi_allocate_pages_aligned() in alignedmem.c. Update efi_allocate_pages() to invoke it unless the minimum alignment equals the EFI page size (4 KB), in which case the ordinary page allocator is sufficient. This way, efi_allocate_pages_aligned() will only be pulled into the build if it is actually being used (which will be on arm64 only in the immediate future)
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
Revision tags: v5.4.28, v5.4.27 |
|
#
fffb6804 |
| 19-Mar-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/gop: Allow specifying mode number on command line
Add the ability to choose a video mode for the selected gop by using a command-line argument of the form video=efifb:mode=<n>
Signed-off-by: A
efi/gop: Allow specifying mode number on command line
Add the ability to choose a video mode for the selected gop by using a command-line argument of the form video=efifb:mode=<n>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200320020028.1936003-12-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
b4b89a02 |
| 19-Mar-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/gop: Add prototypes for query_mode and set_mode
Add prototypes and argmap for the Graphics Output Protocol's QueryMode and SetMode functions.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu
efi/gop: Add prototypes for query_mode and set_mode
Add prototypes and argmap for the Graphics Output Protocol's QueryMode and SetMode functions.
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200320020028.1936003-11-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
22090f84 |
| 23-Apr-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: unify EFI call wrappers for non-x86
We have wrappers around EFI calls so that x86 can define special versions for mixed mode, while all other architectures can use the same simple defin
efi/libstub: unify EFI call wrappers for non-x86
We have wrappers around EFI calls so that x86 can define special versions for mixed mode, while all other architectures can use the same simple definition that just issues the call directly. In preparation for the arrival of yet another architecture that doesn't need anything special here (RISC-V), let's move the default definition into a shared header.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
cf6b8366 |
| 21-Apr-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub: Make initrd file loader configurable
Loading an initrd passed via the kernel command line is deprecated: it is limited to files that reside in the same volume as the one the kernel itse
efi/libstub: Make initrd file loader configurable
Loading an initrd passed via the kernel command line is deprecated: it is limited to files that reside in the same volume as the one the kernel itself was loaded from, and we have more flexible ways to achieve the same. So make it configurable so new architectures can decide not to enable it.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|
#
105cb954 |
| 09-Apr-2020 |
Arvind Sankar <nivedita@alum.mit.edu> |
efi/x86: Move efi stub globals from .bss to .data
Commit
3ee372ccce4d ("x86/boot/compressed/64: Remove .bss/.pgtable from bzImage")
removed the .bss section from the bzImage.
However, while a P
efi/x86: Move efi stub globals from .bss to .data
Commit
3ee372ccce4d ("x86/boot/compressed/64: Remove .bss/.pgtable from bzImage")
removed the .bss section from the bzImage.
However, while a PE loader is required to zero-initialize the .bss section before calling the PE entry point, the EFI handover protocol does not currently document any requirement that .bss be initialized by the bootloader prior to calling the handover entry.
When systemd-boot is used to boot a unified kernel image [1], the image is constructed by embedding the bzImage as a .linux section in a PE executable that contains a small stub loader from systemd together with additional sections and potentially an initrd. As the .bss section within the bzImage is no longer explicitly present as part of the file, it is not initialized before calling the EFI handover entry. Furthermore, as the size of the embedded .linux section is only the size of the bzImage file itself, the .bss section's memory may not even have been allocated.
In particular, this can result in efi_disable_pci_dma being true even when it was not specified via the command line or configuration option, which in turn causes crashes while booting on some systems.
To avoid issues, place all EFI stub global variables into the .data section instead of .bss. As of this writing, only boolean flags for a few command line arguments and the sys_table pointer were in .bss and will now move into the .data section.
[1] https://systemd.io/BOOT_LOADER_SPECIFICATION/#type-2-efi-unified-kernel-images
Fixes: 3ee372ccce4d ("x86/boot/compressed/64: Remove .bss/.pgtable from bzImage") Reported-by: Sergey Shatunov <me@prok.pw> Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20200406180614.429454-1-nivedita@alum.mit.edu Link: https://lore.kernel.org/r/20200409130434.6736-4-ardb@kernel.org
show more ...
|
Revision tags: v5.4.26, v5.4.25, v5.4.24, v5.4.23, v5.4.22, v5.4.21 |
|
#
3b8f44fc |
| 15-Feb-2020 |
Ard Biesheuvel <ardb@kernel.org> |
efi/libstub/x86: Use Exit() boot service to exit the stub on errors
Currently, we either return with an error [from efi_pe_entry()] or enter a deadloop [in efi_main()] if any fatal errors occur duri
efi/libstub/x86: Use Exit() boot service to exit the stub on errors
Currently, we either return with an error [from efi_pe_entry()] or enter a deadloop [in efi_main()] if any fatal errors occur during execution of the EFI stub. Let's switch to calling the Exit() EFI boot service instead in both cases, so that we a) can get rid of the deadloop, and simply return to the boot manager if any errors occur during execution of the stub, including during the call to ExitBootServices(), b) can also return cleanly from efi_pe_entry() or efi_main() in mixed mode, once we introduce support for LoadImage/StartImage based mixed mode in the next patch.
Note that on systems running downstream GRUBs [which do not use LoadImage or StartImage to boot the kernel, and instead, pass their own image handle as the loaded image handle], calling Exit() will exit from GRUB rather than from the kernel, but this is a tolerable side effect.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
show more ...
|