x86/ioremap: Map EFI runtime services data as encrypted for SEV
authorTom Lendacky <thomas.lendacky@amd.com>
Tue, 10 Mar 2020 17:35:57 +0000 (18:35 +0100)
committerBorislav Petkov <bp@suse.de>
Wed, 11 Mar 2020 14:54:54 +0000 (15:54 +0100)
commit985e537a4082b4635754a57f4f95430790afee6a
tree506b1454c4c6401263bf250598a4a2fca8edf188
parent2c523b344dfa65a3738e7039832044aa133c75fb
x86/ioremap: Map EFI runtime services data as encrypted for SEV

The dmidecode program fails to properly decode the SMBIOS data supplied
by OVMF/UEFI when running in an SEV guest. The SMBIOS area, under SEV, is
encrypted and resides in reserved memory that is marked as EFI runtime
services data.

As a result, when memremap() is attempted for the SMBIOS data, it
can't be mapped as regular RAM (through try_ram_remap()) and, since
the address isn't part of the iomem resources list, it isn't mapped
encrypted through the fallback ioremap().

Add a new __ioremap_check_other() to deal with memory types like
EFI_RUNTIME_SERVICES_DATA which are not covered by the resource ranges.

This allows any runtime services data which has been created encrypted,
to be mapped encrypted too.

 [ bp: Move functionality to a separate function. ]

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Joerg Roedel <jroedel@suse.de>
Tested-by: Joerg Roedel <jroedel@suse.de>
Cc: <stable@vger.kernel.org> # 5.3
Link: https://lkml.kernel.org/r/2d9e16eb5b53dc82665c95c6764b7407719df7a0.1582645327.git.thomas.lendacky@amd.com
arch/x86/mm/ioremap.c