efi: earlycon: Reprobe after parsing config tables
authorArd Biesheuvel <ardb@kernel.org>
Sun, 12 Mar 2023 22:00:03 +0000 (23:00 +0100)
committerArd Biesheuvel <ardb@kernel.org>
Mon, 13 Mar 2023 22:28:43 +0000 (23:28 +0100)
commit8b3a149db461d3286d1e211112de3b44ccaeaf71
tree69be97ff89eb46cba2d8685fec4164b8d2d5049b
parent3c66bb1918c262dd52fb4221a8d372619c5da70a
efi: earlycon: Reprobe after parsing config tables

Commit 732ea9db9d8a ("efi: libstub: Move screen_info handling to common
code") reorganized the earlycon handling so that all architectures pass
the screen_info data via a EFI config table instead of populating struct
screen_info directly, as the latter is only possible when the EFI stub
is baked into the kernel (and not into the decompressor).

However, this means that struct screen_info may not have been populated
yet by the time the earlycon probe takes place, and this results in a
non-functional early console.

So let's probe again right after parsing the config tables and
populating struct screen_info. Note that this means that earlycon output
starts a bit later than before, and so it may fail to capture issues
that occur while doing the early EFI initialization.

Fixes: 732ea9db9d8a ("efi: libstub: Move screen_info handling to common code")
Reported-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/earlycon.c
drivers/firmware/efi/efi-init.c
include/linux/efi.h