Lines Matching +full:- +full:seed

1 // SPDX-License-Identifier: GPL-2.0-only
3 * efi.c - EFI subsystem
101 return -EINVAL; in parse_efi_cmdline()
134 return -EINVAL; in systab_show()
153 return str - buf; in systab_show()
182 return attr->mode; in efi_attr_is_visible()
266 return -ENOMEM; in efivar_ssdt_load()
282 return -ENOMEM; in efivar_ssdt_load()
289 ucs2_as_utf8(utf8_name, name, limit - 1); in efivar_ssdt_load()
293 pr_info("loading SSDT from variable %s-%pUl\n", efivar_ssdt, &guid); in efivar_ssdt_load()
297 return -EIO; in efivar_ssdt_load()
301 return -ENOMEM; in efivar_ssdt_load()
340 switch (md->type) { in efi_debugfs_init()
343 type_count[md->type]++); in efi_debugfs_init()
347 type_count[md->type]++); in efi_debugfs_init()
359 debugfs_blob[i].size = md->num_pages << EFI_PAGE_SHIFT; in efi_debugfs_init()
360 debugfs_blob[i].data = memremap(md->phys_addr, in efi_debugfs_init()
405 platform_device_register_simple("rtc-efi", 0, NULL, 0); in efisubsys_init()
411 error = -ENOMEM; in efisubsys_init()
475 unsigned long long start = md->phys_addr; in efi_find_mirror()
476 unsigned long long size = md->num_pages << EFI_PAGE_SHIFT; in efi_find_mirror()
479 if (md->attribute & EFI_MEMORY_MORE_RELIABLE) { in efi_find_mirror()
501 return -EINVAL; in __efi_mem_desc_lookup()
506 return -EINVAL; in __efi_mem_desc_lookup()
514 if ((md->phys_addr & (EFI_PAGE_SIZE - 1)) || in __efi_mem_desc_lookup()
515 (md->num_pages <= 0) || in __efi_mem_desc_lookup()
516 (md->num_pages > (U64_MAX - md->phys_addr) >> EFI_PAGE_SHIFT)) in __efi_mem_desc_lookup()
519 size = md->num_pages << EFI_PAGE_SHIFT; in __efi_mem_desc_lookup()
520 end = md->phys_addr + size; in __efi_mem_desc_lookup()
521 if (phys_addr >= md->phys_addr && phys_addr < end) { in __efi_mem_desc_lookup()
526 return -ENOENT; in __efi_mem_desc_lookup()
537 u64 size = md->num_pages << EFI_PAGE_SHIFT; in efi_mem_desc_end()
538 u64 end = md->phys_addr + size; in efi_mem_desc_end()
545 * efi_mem_reserve - Reserve an EFI memory region
633 * reserve_unaccepted - Map and reserve unaccepted configuration table
654 size = PAGE_ALIGN(sizeof(*unaccepted) + unaccepted->size); in reserve_unaccepted()
683 return -EINVAL; in efi_config_parse_tables()
697 struct linux_efi_random_seed *seed; in efi_config_parse_tables() local
700 seed = early_memremap(efi_rng_seed, sizeof(*seed)); in efi_config_parse_tables()
701 if (seed != NULL) { in efi_config_parse_tables()
702 size = min_t(u32, seed->size, SZ_1K); // sanity check in efi_config_parse_tables()
703 early_memunmap(seed, sizeof(*seed)); in efi_config_parse_tables()
705 pr_err("Could not map UEFI random seed!\n"); in efi_config_parse_tables()
708 seed = early_memremap(efi_rng_seed, in efi_config_parse_tables()
709 sizeof(*seed) + size); in efi_config_parse_tables()
710 if (seed != NULL) { in efi_config_parse_tables()
711 add_bootloader_randomness(seed->bits, size); in efi_config_parse_tables()
712 memzero_explicit(seed->bits, size); in efi_config_parse_tables()
713 early_memunmap(seed, sizeof(*seed) + size); in efi_config_parse_tables()
715 pr_err("Could not map UEFI random seed!\n"); in efi_config_parse_tables()
741 return -ENOMEM; in efi_config_parse_tables()
748 struct_size(rsv, entry, rsv->size)); in efi_config_parse_tables()
750 for (i = 0; i < atomic_read(&rsv->count); i++) { in efi_config_parse_tables()
751 memblock_reserve(rsv->entry[i].base, in efi_config_parse_tables()
752 rsv->entry[i].size); in efi_config_parse_tables()
755 prsv = rsv->next; in efi_config_parse_tables()
765 efi.runtime_supported_mask &= tbl->runtime_services_supported; in efi_config_parse_tables()
776 phys_initrd_start = tbl->base; in efi_config_parse_tables()
777 phys_initrd_size = tbl->size; in efi_config_parse_tables()
789 if (unaccepted->version == 1) { in efi_config_parse_tables()
804 if (systab_hdr->signature != EFI_SYSTEM_TABLE_SIGNATURE) { in efi_systab_check_header()
806 return -EINVAL; in efi_systab_check_header()
843 for (i = 0; i < sizeof(vendor) - 1 && c16[i]; ++i) in efi_systab_report_header()
850 rev = (u16)systab_hdr->revision; in efi_systab_report_header()
851 pr_info("EFI v%u.%u", systab_hdr->revision >> 16, rev / 10); in efi_systab_report_header()
860 systab_hdr->revision > EFI_1_10_SYSTEM_TABLE_REVISION && in efi_systab_report_header()
894 if (md->type >= ARRAY_SIZE(memory_type_name)) in efi_md_typeattr_format()
895 type_len = snprintf(pos, size, "[type=%u", md->type); in efi_md_typeattr_format()
897 type_len = snprintf(pos, size, "[%-*s", in efi_md_typeattr_format()
898 (int)(sizeof(memory_type_name[0]) - 1), in efi_md_typeattr_format()
899 memory_type_name[md->type]); in efi_md_typeattr_format()
904 size -= type_len; in efi_md_typeattr_format()
906 attr = md->attribute; in efi_md_typeattr_format()
942 * efi_mem_attributes - lookup memmap attributes for physical address
957 if ((md->phys_addr <= phys_addr) && in efi_mem_attributes()
958 (phys_addr < (md->phys_addr + in efi_mem_attributes()
959 (md->num_pages << EFI_PAGE_SHIFT)))) in efi_mem_attributes()
960 return md->attribute; in efi_mem_attributes()
966 * efi_mem_type - lookup memmap type for physical address
971 * map, -EINVAL otherwise.
978 return -ENOTSUPP; in efi_mem_type()
981 if ((md->phys_addr <= phys_addr) && in efi_mem_type()
982 (phys_addr < (md->phys_addr + in efi_mem_type()
983 (md->num_pages << EFI_PAGE_SHIFT)))) in efi_mem_type()
984 return md->type; in efi_mem_type()
986 return -EINVAL; in efi_mem_type()
999 err = -EINVAL; in efi_status_to_err()
1002 err = -ENOSPC; in efi_status_to_err()
1005 err = -EIO; in efi_status_to_err()
1008 err = -EROFS; in efi_status_to_err()
1011 err = -EACCES; in efi_status_to_err()
1014 err = -ENOENT; in efi_status_to_err()
1017 err = -EINTR; in efi_status_to_err()
1020 err = -EINVAL; in efi_status_to_err()
1033 return -ENODEV; in efi_memreserve_map_root()
1039 return -ENOMEM; in efi_memreserve_map_root()
1050 return -ENOMEM; in efi_mem_reserve_iomem()
1052 res->name = "reserved"; in efi_mem_reserve_iomem()
1053 res->flags = IORESOURCE_MEM; in efi_mem_reserve_iomem()
1054 res->start = addr; in efi_mem_reserve_iomem()
1055 res->end = addr + size - 1; in efi_mem_reserve_iomem()
1079 return -ENODEV; in efi_mem_reserve_persistent()
1088 for (prsv = efi_memreserve_root->next; prsv; ) { in efi_mem_reserve_persistent()
1091 return -ENOMEM; in efi_mem_reserve_persistent()
1092 index = atomic_fetch_add_unless(&rsv->count, 1, rsv->size); in efi_mem_reserve_persistent()
1093 if (index < rsv->size) { in efi_mem_reserve_persistent()
1094 rsv->entry[index].base = addr; in efi_mem_reserve_persistent()
1095 rsv->entry[index].size = size; in efi_mem_reserve_persistent()
1100 prsv = rsv->next; in efi_mem_reserve_persistent()
1104 /* no slot found - allocate a new linked list entry */ in efi_mem_reserve_persistent()
1107 return -ENOMEM; in efi_mem_reserve_persistent()
1121 rsv->size = EFI_MEMRESERVE_COUNT(SZ_4K); in efi_mem_reserve_persistent()
1122 atomic_set(&rsv->count, 1); in efi_mem_reserve_persistent()
1123 rsv->entry[0].base = addr; in efi_mem_reserve_persistent()
1124 rsv->entry[0].size = size; in efi_mem_reserve_persistent()
1127 rsv->next = efi_memreserve_root->next; in efi_mem_reserve_persistent()
1128 efi_memreserve_root->next = __pa(rsv); in efi_mem_reserve_persistent()
1148 struct linux_efi_random_seed *seed; in update_efi_random_seed() local
1154 seed = memremap(efi_rng_seed, sizeof(*seed), MEMREMAP_WB); in update_efi_random_seed()
1155 if (seed != NULL) { in update_efi_random_seed()
1156 size = min(seed->size, EFI_RANDOM_SEED_SIZE); in update_efi_random_seed()
1157 memunmap(seed); in update_efi_random_seed()
1159 pr_err("Could not map UEFI random seed!\n"); in update_efi_random_seed()
1162 seed = memremap(efi_rng_seed, sizeof(*seed) + size, in update_efi_random_seed()
1164 if (seed != NULL) { in update_efi_random_seed()
1165 seed->size = size; in update_efi_random_seed()
1166 get_random_bytes(seed->bits, seed->size); in update_efi_random_seed()
1167 memunmap(seed); in update_efi_random_seed()
1169 pr_err("Could not map UEFI random seed!\n"); in update_efi_random_seed()