Lines Matching +full:rc +full:- +full:map +full:- +full:name
1 /*-
136 "0 - never, 1 - once, 2 - always");
143 efi_is_in_map(struct efi_md *map, int ndesc, int descsz, vm_offset_t addr) in efi_is_in_map() argument
148 for (i = 0, p = map; i < ndesc; i++, p = efi_next_descriptor(p, in efi_is_in_map()
150 if ((p->md_attr & EFI_MD_ATTR_RT) == 0) in efi_is_in_map()
153 if (addr >= p->md_virt && in efi_is_in_map()
154 addr < p->md_virt + p->md_pages * EFI_PAGE_SIZE) in efi_is_in_map()
178 struct efi_md *map; in efi_init() local
196 if (efi_systbl == NULL || efi_systbl->st_hdr.th_sig != EFI_SYSTBL_SIG) { in efi_init()
202 efi_cfgtbl = (efi_systbl->st_cfgtbl == 0) ? NULL : in efi_init()
203 (struct efi_cfgtbl *)efi_systbl->st_cfgtbl; in efi_init()
213 printf("EFI map is not present\n"); in efi_init()
217 map = (struct efi_md *)((uint8_t *)efihdr + efisz); in efi_init()
218 if (efihdr->descriptor_size == 0) in efi_init()
221 ndesc = efihdr->memory_size / efihdr->descriptor_size; in efi_init()
222 if (!efi_create_1t1_map(map, ndesc, efihdr->descriptor_size)) { in efi_init()
224 printf("EFI cannot create runtime map\n"); in efi_init()
228 efi_runtime = (efi_systbl->st_rt == 0) ? NULL : in efi_init()
229 (struct efi_rt *)efi_systbl->st_rt; in efi_init()
240 * RS->GetTime function. They switch from one we can only use early in efi_init()
242 * call RS->SetVirtualAddressMap. As this is not always the case, e.g. in efi_init()
243 * with an old loader.efi, check if the RS->GetTime function is within in efi_init()
244 * the EFI map, and fail to attach if not. in efi_init()
247 if (rtdm == NULL || !efi_is_in_map(map, ndesc, efihdr->descriptor_size, in efi_init()
248 (vm_offset_t)rtdm->rt_gettime)) { in efi_init()
259 * We use SHUTDOWN_PRI_LAST - 1 to trigger after IPMI, but before ACPI. in efi_init()
262 efi_shutdown_final, NULL, SHUTDOWN_PRI_LAST - 1); in efi_init()
309 curpmap = &td->td_proc->p_vmspace->vm_pmap; in efi_enter()
319 MPASS((td->td_pflags & TDP_EFIRT) == 0); in efi_enter()
320 td->td_pflags |= TDP_EFIRT; in efi_enter()
332 MPASS((td->td_pflags & TDP_EFIRT) != 0); in efi_leave()
333 td->td_pflags &= ~TDP_EFIRT; in efi_leave()
337 curpmap = &curproc->p_vmspace->vm_pmap; in efi_leave()
355 count = efi_systbl->st_entries; in get_table()
357 while (count--) { in get_table()
358 if (!bcmp(&ct->ct_guid, guid, sizeof(*guid))) { in get_table()
359 *ptr = ct->ct_data; in get_table()
395 if (((struct efi_esrt_table *)buf)->fw_resource_version != in get_table_length()
401 fw_resource_count = ((struct efi_esrt_table *)buf)-> in get_table_length()
437 prop_len = ((struct efi_prop_table *)buf)->length; in get_table_length()
469 if (mem_addr->version != 2) { in get_table_length()
473 len += mem_addr->descriptor_size * mem_addr->num_ents; in get_table_length()
502 int rc; in copy_table() local
512 rc = get_table_length(tables[table_idx].type, table_len, &taddr); in copy_table()
513 if (rc != 0) in copy_table()
514 return rc; in copy_table()
521 rc = physcopyout((vm_paddr_t)taddr, *buf, *table_len); in copy_table()
522 return (rc); in copy_table()
534 switch (ec->ec_argcnt) { in efi_rt_arch_call_nofault()
536 ec->ec_efi_status = ((register_t EFIABI_ATTR (*)(void)) in efi_rt_arch_call_nofault()
537 ec->ec_fptr)(); in efi_rt_arch_call_nofault()
540 ec->ec_efi_status = ((register_t EFIABI_ATTR (*)(register_t)) in efi_rt_arch_call_nofault()
541 ec->ec_fptr)(ec->ec_arg1); in efi_rt_arch_call_nofault()
544 ec->ec_efi_status = ((register_t EFIABI_ATTR (*)(register_t, in efi_rt_arch_call_nofault()
545 register_t))ec->ec_fptr)(ec->ec_arg1, ec->ec_arg2); in efi_rt_arch_call_nofault()
548 ec->ec_efi_status = ((register_t EFIABI_ATTR (*)(register_t, in efi_rt_arch_call_nofault()
549 register_t, register_t))ec->ec_fptr)(ec->ec_arg1, in efi_rt_arch_call_nofault()
550 ec->ec_arg2, ec->ec_arg3); in efi_rt_arch_call_nofault()
553 ec->ec_efi_status = ((register_t EFIABI_ATTR (*)(register_t, in efi_rt_arch_call_nofault()
554 register_t, register_t, register_t))ec->ec_fptr)( in efi_rt_arch_call_nofault()
555 ec->ec_arg1, ec->ec_arg2, ec->ec_arg3, ec->ec_arg4); in efi_rt_arch_call_nofault()
558 ec->ec_efi_status = ((register_t EFIABI_ATTR (*)(register_t, in efi_rt_arch_call_nofault()
560 ec->ec_fptr)(ec->ec_arg1, ec->ec_arg2, ec->ec_arg3, in efi_rt_arch_call_nofault()
561 ec->ec_arg4, ec->ec_arg5); in efi_rt_arch_call_nofault()
564 panic("efi_rt_arch_call: %d args", (int)ec->ec_argcnt); in efi_rt_arch_call_nofault()
582 error = efi_status_to_errno(ecp->ec_efi_status); in efi_call()
584 printf("EFI %s call faulted, error %d\n", ecp->ec_name, error); in efi_call()
590 efi_runtime))->method)
771 var_get(efi_char *name, efi_guid_t *vendor, uint32_t *attrib, in var_get() argument
782 ec.ec_arg1 = (uintptr_t)name; in var_get()
795 var_nextname(size_t *namesize, efi_char *name, efi_guid_t *vendor) in var_nextname() argument
806 ec.ec_arg2 = (uintptr_t)name; in var_nextname()
811 kmsan_mark(name, *namesize, KMSAN_STATE_INITED); in var_nextname()
816 var_set(efi_char *name, efi_guid_t *vendor, uint32_t attrib, in var_set() argument
826 ec.ec_arg1 = (uintptr_t)name; in var_set()
872 .name = "efirt",