Lines Matching +full:secure +full:- +full:regions

1 // SPDX-License-Identifier: GPL-2.0-only
45 * yyyy=4 digit year, mm=1-12, dd=1-31.
54 * @rsvd_next_header: 32-bit pointer to the next Secure Boot Module in the
60 …rom https://downloadcenter.intel.com/download/23197/Intel-Quark-SoC-X1000-Board-Support-Package-BSP
138 if (remaining_size - size < EFI_MIN_RESERVE) in query_variable_store_nonblocking()
173 if ((remaining_size - size < EFI_MIN_RESERVE) && in efi_query_variable_store()
217 if (remaining_size - size < EFI_MIN_RESERVE) in efi_query_variable_store()
235 * However, some boot services regions contain data that is required
237 * freed. This is done by tagging those regions with the
242 * into efi.memmap (splitting existing regions if necessary) and tag
269 mr.range.end = addr + size - 1; in efi_arch_mem_reserve()
296 * can free regions in efi_free_boot_services().
298 * Use this function to ensure we do not free regions owned by somebody
299 * else. We must only reserve (and then free) regions:
301 * - Not within any part of the kernel
302 * - Not the BIOS reserved area (E820_TYPE_RESERVED, E820_TYPE_NVS, etc)
323 u64 start = md->phys_addr; in efi_reserve_boot_services()
324 u64 size = md->num_pages << EFI_PAGE_SHIFT; in efi_reserve_boot_services()
327 if (md->type != EFI_BOOT_SERVICES_CODE && in efi_reserve_boot_services()
328 md->type != EFI_BOOT_SERVICES_DATA) in efi_reserve_boot_services()
338 * critical regions of memory (like the kernel image) or in efi_reserve_boot_services()
339 * those regions that somebody else has already in efi_reserve_boot_services()
365 * those regions that must not be paired with in efi_reserve_boot_services()
368 md->attribute |= EFI_MEMORY_RUNTIME; in efi_reserve_boot_services()
373 * Apart from having VA mappings for EFI boot services code/data regions,
380 u64 pa = md->phys_addr; in efi_unmap_pages()
381 u64 va = md->virt_addr; in efi_unmap_pages()
386 * regions. in efi_unmap_pages()
391 if (kernel_unmap_pages_in_pgd(pgd, pa, md->num_pages)) in efi_unmap_pages()
394 if (kernel_unmap_pages_in_pgd(pgd, va, md->num_pages)) in efi_unmap_pages()
405 /* Keep all regions for /sys/kernel/debug/efi */ in efi_free_boot_services()
410 unsigned long long start = md->phys_addr; in efi_free_boot_services()
411 unsigned long long size = md->num_pages << EFI_PAGE_SHIFT; in efi_free_boot_services()
414 if (md->type != EFI_BOOT_SERVICES_CODE && in efi_free_boot_services()
415 md->type != EFI_BOOT_SERVICES_DATA) { in efi_free_boot_services()
421 if (md->attribute & EFI_MEMORY_RUNTIME) { in efi_free_boot_services()
428 * code/data regions were mapped as a quirk for buggy firmware. in efi_free_boot_services()
434 * Nasty quirk: if all sub-1MB memory is used for boot in efi_free_boot_services()
442 * grub2-efi on a hard disk. (And no, I don't know why in efi_free_boot_services()
450 size -= rm_size; in efi_free_boot_services()
455 * - BIOS might clobber it in efi_free_boot_services()
456 * - Crash kernel needs it to be reserved in efi_free_boot_services()
461 size -= (SZ_1M - start); in efi_free_boot_services()
484 * regions that are not tagged EFI_MEMORY_RUNTIME, since those in efi_free_boot_services()
485 * regions have now been freed. in efi_free_boot_services()
489 if (!(md->attribute & EFI_MEMORY_RUNTIME) && in efi_free_boot_services()
490 (md->type == EFI_BOOT_SERVICES_CODE || in efi_free_boot_services()
491 md->type == EFI_BOOT_SERVICES_DATA)) in efi_free_boot_services()
532 ret = -ENOMEM; in efi_reuse_config()
536 if (!data->smbios) in efi_reuse_config()
544 ret = -ENOMEM; in efi_reuse_config()
551 guid = ((efi_config_table_64_t *)p)->guid; in efi_reuse_config()
554 ((efi_config_table_64_t *)p)->table = data->smbios; in efi_reuse_config()
573 pr_info("Setup done, disabling due to 32/64-bit mismatch\n"); in efi_apply_memmap_quirks()
611 if (csh->csh_signature != QUARK_CSH_SIGNATURE || in qrk_capsule_setup_info()
612 csh->headersize != QUARK_SECURITY_HEADER_SIZE) in qrk_capsule_setup_info()
622 if (csh->rsvd_next_header != 0) { in qrk_capsule_setup_info()
624 return -EINVAL; in qrk_capsule_setup_info()
627 *pkbuff += csh->headersize; in qrk_capsule_setup_info()
628 cap_info->total_size = csh->headersize; in qrk_capsule_setup_info()
633 cap_info->phys[0] += csh->headersize; in qrk_capsule_setup_info()
636 * cap_info->capsule should point at a virtual mapping of the entire in qrk_capsule_setup_info()
641 * virtual mapping, let's just point cap_info->capsule at our copy in qrk_capsule_setup_info()
644 cap_info->capsule = &cap_info->header; in qrk_capsule_setup_info()
665 cap_info->total_size = 0; in efi_capsule_setup_info()
671 * - a value > 0 if the setup should continue, after advancing in efi_capsule_setup_info()
673 * - 0 if not enough hdr_bytes are available yet in efi_capsule_setup_info()
674 * - a negative error code otherwise in efi_capsule_setup_info()
676 quirk_handler = (typeof(quirk_handler))id->driver_data; in efi_capsule_setup_info()
682 memcpy(&cap_info->header, kbuff, sizeof(cap_info->header)); in efi_capsule_setup_info()
684 cap_info->total_size += cap_info->header.imagesize; in efi_capsule_setup_info()
724 * Address range 0x0000 - 0x0fff is always mapped in the efi_pgd, so in efi_crash_gracefully_on_page_fault()