[PATCH v3 0/5] x86: Show in sysfs if a memory node is able to do encryption

Martin Fernandez
2021-12-03T19:22:51Z

Show for each node if every memory descriptor in that node has the
EFI_MEMORY_CPU_CRYPTO attribute.

fwupd project plans to use it as part of a check to see if the users
have properly configured memory hardware encryption capabilities. It's
planned to make it part of a specification that can be passed to
people purchasing hardware. It's called Host Security ID:
https://fwupd.github.io/libfwupdplugin/hsi.html

This also can be useful in the future if NUMA decides to prioritize
nodes that are able to do encryption.

Changes since v2:

e820__range_mark_crypto -> e820__range_mark_crypto_capable.

In e820__range_remove: Create a region with crypto capabilities
instead of creating one without it and then mark it.

Changes since v1:

Modify __e820__range_update to update the crypto capabilities of a
range; now this function will change the crypto capability of a range
if it's called with the same old_type and new_type. Rework
efi_mark_e820_regions_as_crypto_capable based on this.

Update do_add_efi_memmap to mark the regions as it creates them.

Change the type of crypto_capable in e820_entry from bool to u8.

Fix e820__update_table changes.

Remove memblock_add_crypto_capable. Now you have to add the region and
mark it then.

Better place for crypto_capable in pglist_data.

Martin Fernandez (5):
mm/memblock: Tag memblocks with crypto capabilities
mm/mmzone: Tag pg_data_t with crypto capabilities
Tag e820_entry with crypto capabilities
x86/efi: Tag e820_entries as crypto capable from EFI memmap
drivers/node: Show in sysfs node's crypto capabilities

arch/x86/include/asm/e820/api.h | 1 +
arch/x86/include/asm/e820/types.h | 1 +
arch/x86/kernel/e820.c | 59 ++++++++++++++++++++++++-------
arch/x86/platform/efi/efi.c | 25 +++++++++++++
drivers/base/node.c | 10 ++++++
include/linux/memblock.h | 5 +++
include/linux/mmzone.h | 3 ++
mm/memblock.c | 49 +++++++++++++++++++++++++
mm/page_alloc.c | 1 +
9 files changed, 142 insertions(+), 12 deletions(-)

--
2.30.2