Lines Matching +full:rom +full:- +full:addr
1 // SPDX-License-Identifier: GPL-2.0-only
3 /* -----------------------------------------------------------------------
7 * ----------------------------------------------------------------------- */
22 #include "x86-stub.h"
43 struct pci_setup_rom *rom = NULL; in preserve_pci_rom_image() local
61 size = romsize + sizeof(*rom); in preserve_pci_rom_image()
64 (void **)&rom); in preserve_pci_rom_image()
66 efi_err("Failed to allocate memory for 'rom'\n"); in preserve_pci_rom_image()
70 memset(rom, 0, sizeof(*rom)); in preserve_pci_rom_image()
72 rom->data.type = SETUP_PCI; in preserve_pci_rom_image()
73 rom->data.len = size - sizeof(struct setup_data); in preserve_pci_rom_image()
74 rom->data.next = 0; in preserve_pci_rom_image()
75 rom->pcilen = romsize; in preserve_pci_rom_image()
76 *__rom = rom; in preserve_pci_rom_image()
79 PCI_VENDOR_ID, 1, &rom->vendor); in preserve_pci_rom_image()
82 efi_err("Failed to read rom->vendor\n"); in preserve_pci_rom_image()
87 PCI_DEVICE_ID, 1, &rom->devid); in preserve_pci_rom_image()
90 efi_err("Failed to read rom->devid\n"); in preserve_pci_rom_image()
94 status = efi_call_proto(pci, get_location, &rom->segment, &rom->bus, in preserve_pci_rom_image()
95 &rom->device, &rom->function); in preserve_pci_rom_image()
100 memcpy(rom->romdata, romimage, romsize); in preserve_pci_rom_image()
104 efi_bs_call(free_pool, rom); in preserve_pci_rom_image()
111 * done directly at the EFI function call-site.
146 data = (struct setup_data *)(unsigned long)params->hdr.setup_data; in setup_efi_pci()
148 while (data && data->next) in setup_efi_pci()
149 data = (struct setup_data *)(unsigned long)data->next; in setup_efi_pci()
153 struct pci_setup_rom *rom; in setup_efi_pci() local
160 status = preserve_pci_rom_image(pci, &rom); in setup_efi_pci()
165 data->next = (unsigned long)rom; in setup_efi_pci()
167 params->hdr.setup_data = (unsigned long)rom; in setup_efi_pci()
169 data = (struct setup_data *)rom; in setup_efi_pci()
206 status = efi_call_proto(p, get_all, new->data, &size); in retrieve_apple_device_properties()
212 new->type = SETUP_APPLE_PROPERTIES; in retrieve_apple_device_properties()
213 new->len = size; in retrieve_apple_device_properties()
214 new->next = 0; in retrieve_apple_device_properties()
216 data = (struct setup_data *)(unsigned long)boot_params->hdr.setup_data; in retrieve_apple_device_properties()
218 boot_params->hdr.setup_data = (unsigned long)new; in retrieve_apple_device_properties()
220 while (data->next) in retrieve_apple_device_properties()
221 data = (struct setup_data *)(unsigned long)data->next; in retrieve_apple_device_properties()
222 data->next = (unsigned long)new; in retrieve_apple_device_properties()
241 rounded_end - rounded_start, in efi_adjust_memory_range_protection()
276 unprotect_size = min(rounded_end, next) - unprotect_start; in efi_adjust_memory_range_protection()
392 si->orig_video_isVGA = VIDEO_TYPE_EFI; in setup_uga()
394 si->lfb_depth = 32; in setup_uga()
395 si->lfb_width = width; in setup_uga()
396 si->lfb_height = height; in setup_uga()
398 si->red_size = 8; in setup_uga()
399 si->red_pos = 16; in setup_uga()
400 si->green_size = 8; in setup_uga()
401 si->green_pos = 8; in setup_uga()
402 si->blue_size = 8; in setup_uga()
403 si->blue_pos = 0; in setup_uga()
404 si->rsvd_size = 8; in setup_uga()
405 si->rsvd_pos = 24; in setup_uga()
423 si = &boot_params->screen_info; in setup_graphics()
471 if (efi_system_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) in efi_pe_entry()
481 hdr->root_flags = 1; in efi_pe_entry()
482 hdr->vid_mode = 0xffff; in efi_pe_entry()
484 hdr->type_of_loader = 0x21; in efi_pe_entry()
491 efi_set_u64_split((unsigned long)cmdline_ptr, &hdr->cmd_line_ptr, in efi_pe_entry()
506 e820ext->type = SETUP_E820_EXT; in add_e820ext()
507 e820ext->len = nr_entries * sizeof(struct boot_e820_entry); in add_e820ext()
508 e820ext->next = 0; in add_e820ext()
510 data = (struct setup_data *)(unsigned long)params->hdr.setup_data; in add_e820ext()
512 while (data && data->next) in add_e820ext()
513 data = (struct setup_data *)(unsigned long)data->next; in add_e820ext()
516 data->next = (unsigned long)e820ext; in add_e820ext()
518 params->hdr.setup_data = (unsigned long)e820ext; in add_e820ext()
524 struct boot_e820_entry *entry = params->e820_table; in setup_e820()
525 struct efi_info *efi = ¶ms->efi_info; in setup_e820()
532 nr_desc = efi->efi_memmap_size / efi->efi_memdesc_size; in setup_e820()
537 unsigned long m = efi->efi_memmap; in setup_e820()
540 m |= (u64)efi->efi_memmap_hi << 32; in setup_e820()
543 d = efi_early_memdesc_ptr(m, efi->efi_memdesc_size, i); in setup_e820()
544 switch (d->type) { in setup_e820()
568 (d->attribute & EFI_MEMORY_SP)) in setup_e820()
586 process_unaccepted_memory(d->phys_addr, in setup_e820()
587 d->phys_addr + PAGE_SIZE * d->num_pages); in setup_e820()
594 if (prev && prev->type == e820_type && in setup_e820()
595 (prev->addr + prev->size) == d->phys_addr) { in setup_e820()
596 prev->size += d->num_pages << 12; in setup_e820()
600 if (nr_entries == ARRAY_SIZE(params->e820_table)) { in setup_e820()
601 u32 need = (nr_desc - i) * sizeof(struct e820_entry) + in setup_e820()
608 entry = (struct boot_e820_entry *)e820ext->data; in setup_e820()
611 entry->addr = d->phys_addr; in setup_e820()
612 entry->size = d->num_pages << PAGE_SHIFT; in setup_e820()
613 entry->type = e820_type; in setup_e820()
618 if (nr_entries > ARRAY_SIZE(params->e820_table)) { in setup_e820()
619 u32 nr_e820ext = nr_entries - ARRAY_SIZE(params->e820_table); in setup_e820()
622 nr_entries -= nr_e820ext; in setup_e820()
625 params->e820_entries = (u8)nr_entries; in setup_e820()
665 nr_desc = map->map_size / map->desc_size; in allocate_e820()
666 if (nr_desc > ARRAY_SIZE(params->e820_table) - EFI_MMAP_NR_SLACK_SLOTS) { in allocate_e820()
667 u32 nr_e820ext = nr_desc - ARRAY_SIZE(params->e820_table) + in allocate_e820()
693 memcpy(&p->efi->efi_loader_signature, signature, sizeof(__u32)); in exit_boot_func()
696 &p->efi->efi_systab, &p->efi->efi_systab_hi); in exit_boot_func()
697 p->efi->efi_memdesc_size = map->desc_size; in exit_boot_func()
698 p->efi->efi_memdesc_version = map->desc_ver; in exit_boot_func()
699 efi_set_u64_split((unsigned long)map->map, in exit_boot_func()
700 &p->efi->efi_memmap, &p->efi->efi_memmap_hi); in exit_boot_func()
701 p->efi->efi_memmap_size = map->map_size; in exit_boot_func()
714 priv.efi = &boot_params->efi_info; in exit_boot()
726 boot_params->alt_mem_k = 32 * 1024; in exit_boot()
741 efi_err("Unsupported SEV-SNP features detected: 0x%llx\n", in have_unsupported_snp_features()
753 * This only updates seed[0] when running on 32-bit, but in that case, in efi_get_seed()
754 * seed[1] is not used anyway, as there is no virtual KASLR on 32-bit. in efi_get_seed()
767 unsigned long addr, alloc_size, entry; in efi_decompress_kernel() local
776 u64 range = KERNEL_IMAGE_SIZE - LOAD_PHYSICAL_ADDR - kernel_total_size; in efi_decompress_kernel()
782 virt_addr &= ~(CONFIG_PHYSICAL_ALIGN - 1); in efi_decompress_kernel()
791 if (efi_system_table->hdr.revision <= EFI_2_00_SYSTEM_TABLE_REVISION && in efi_decompress_kernel()
793 efi_debug("AMI firmware v2.0 or older detected - disabling physical KASLR\n"); in efi_decompress_kernel()
798 status = efi_random_alloc(alloc_size, CONFIG_PHYSICAL_ALIGN, &addr, in efi_decompress_kernel()
805 entry = decompress_kernel((void *)addr, virt_addr, error); in efi_decompress_kernel()
807 efi_free(alloc_size, addr); in efi_decompress_kernel()
811 *kernel_entry = addr + entry; in efi_decompress_kernel()
813 return efi_adjust_memory_range_protection(addr, kernel_total_size); in efi_decompress_kernel()
835 struct setup_header *hdr = &boot_params->hdr; in efi_stub_entry()
844 if (efi_system_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) in efi_stub_entry()
853 efi_dxe_table->hdr.signature != EFI_DXE_SERVICES_TABLE_SIGNATURE) { in efi_stub_entry()
876 unsigned long cmdline_paddr = ((u64)hdr->cmd_line_ptr | in efi_stub_entry()
877 ((u64)boot_params->ext_cmd_line_ptr << 32)); in efi_stub_entry()
896 * If the device path is not present, any command-line initrd= in efi_stub_entry()
900 status = efi_load_initrd(image, hdr->initrd_addr_max, ULONG_MAX, in efi_stub_entry()
904 if (initrd && initrd->size > 0) { in efi_stub_entry()
905 efi_set_u64_split(initrd->base, &hdr->ramdisk_image, in efi_stub_entry()
906 &boot_params->ext_ramdisk_image); in efi_stub_entry()
907 efi_set_u64_split(initrd->size, &hdr->ramdisk_size, in efi_stub_entry()
908 &boot_params->ext_ramdisk_size); in efi_stub_entry()
916 if (boot_params->secure_boot == efi_secureboot_mode_unset) in efi_stub_entry()
917 boot_params->secure_boot = efi_get_secureboot(); in efi_stub_entry()
961 memset(_bss, 0, _ebss - _bss); in efi_handover_entry()