lkml.org 
[lkml]   [2022]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v6 0/6] x86: Show in sysfs if a memory node is able to do encryption
    Date
    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. fwupd's people have seen cases where it seems like there
    is memory encryption because all the hardware is capable of doing it,
    but on a closer look there is not, either because of system firmware
    or because some component requires updating to enable the feature.

    It's planned to make it part of a specification that can be passed to
    people purchasing hardware

    These checks will run at every boot. The specification is called Host
    Security ID: https://fwupd.github.io/libfwupdplugin/hsi.html.

    We choosed to do it a per-node basis because although an ABI that
    shows that the whole system memory is capable of encryption would be
    useful for the fwupd use case, doing it in a per-node basis gives also
    the capability to the user to target allocations from applications to
    NUMA nodes which have encryption capabilities.


    Changes since v5:

    Refactor e820__range_{update, remove, set_crypto_capable} in order to
    avoid code duplication.

    Warn the user when a node has both encryptable and non-encryptable
    regions.

    Check that e820_table has enough size to store both current e820_table
    and EFI memmap.


    Changes since v4:

    Add enum to represent the cryptographic capabilities in e820:
    e820_crypto_capabilities.

    Revert __e820__range_update, only adding the new argument for
    __e820__range_add about crypto capabilities.

    Add a function __e820__range_update_crypto similar to
    __e820__range_update but to only update this new field.


    Changes since v3:

    Update date in Doc/ABI file.

    More information about the fwupd usecase and the rationale behind
    doing it in a per-NUMA-node.


    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 (6):
    mm/memblock: Tag memblocks with crypto capabilities
    mm/mmzone: Tag pg_data_t with crypto capabilities
    x86/e820: Refactor range_update and range_remove
    x86/e820: 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

    Documentation/ABI/testing/sysfs-devices-node | 10 +
    arch/x86/include/asm/e820/api.h | 1 +
    arch/x86/include/asm/e820/types.h | 12 +-
    arch/x86/kernel/e820.c | 485 +++++++++++++++----
    arch/x86/platform/efi/efi.c | 37 ++
    drivers/base/node.c | 10 +
    include/linux/memblock.h | 15 +-
    include/linux/mmzone.h | 3 +
    mm/memblock.c | 64 +++
    mm/page_alloc.c | 1 +
    10 files changed, 531 insertions(+), 107 deletions(-)
    create mode 100644 Documentation/ABI/testing/sysfs-devices-node

    --
    2.30.2

    \
     
     \ /
      Last update: 2022-02-03 17:44    [W:3.048 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site