efi: avoid efivars layer when loading SSDTs from variables
authorArd Biesheuvel <ardb@kernel.org>
Fri, 17 Jun 2022 08:34:48 +0000 (10:34 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Mon, 20 Jun 2022 10:43:25 +0000 (12:43 +0200)
commit3881ee0b1edce0ece72d24b7c74f46b73bd6dcba
treebef3b1c49d2e0d76cec89fc54c7f8dd8ccb81b59
parentdb01ea882bf601252dad57242655da17fd9ad2f5
efi: avoid efivars layer when loading SSDTs from variables

The efivars intermediate variable access layer provides an abstraction
that permits the EFI variable store to be replaced by something else
that implements a compatible interface, and caches all variables in the
variable store for fast access via the efivarfs pseudo-filesystem.

The SSDT override feature does not take advantage of either feature, as
it is only used when the generic EFI implementation of efivars is used,
and it traverses all variables only once to find the ones it is
interested in, and frees all data structures that the efivars layer
keeps right after.

So in this case, let's just call EFI's code directly, using the function
pointers in struct efi.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/efi.c