// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2016 Linaro Ltd. <[email protected]> */ #define pr_fmt(fmt) … #include <linux/efi.h> #include <linux/init.h> #include <linux/io.h> #include <linux/memblock.h> #include <asm/early_ioremap.h> static int __initdata tbl_size; unsigned long __ro_after_init efi_mem_attr_table = …; /* * Reserve the memory associated with the Memory Attributes configuration * table, if it exists. */ int __init efi_memattr_init(void) { … } /* * Returns a copy @out of the UEFI memory descriptor @in if it is covered * entirely by a UEFI memory map entry with matching attributes. The virtual * address of @out is set according to the matching entry that was found. */ static bool entry_is_valid(const efi_memory_desc_t *in, efi_memory_desc_t *out) { … } /* * To be called after the EFI page tables have been populated. If a memory * attributes table is available, its contents will be used to update the * mappings with tightened permissions as described by the table. * This requires the UEFI memory map to have already been populated with * virtual addresses. */ int __init efi_memattr_apply_permissions(struct mm_struct *mm, efi_memattr_perm_setter fn) { … }