Lines Matching +full:rom +full:- +full:addr

1 // SPDX-License-Identifier: GPL-2.0-only
3 /* -----------------------------------------------------------------------
7 * ----------------------------------------------------------------------- */
22 #include "x86-stub.h"
45 struct pci_setup_rom *rom __free(efi_pool) = NULL; in preserve_pci_rom_image()
63 size = romsize + sizeof(*rom); in preserve_pci_rom_image()
66 (void **)&rom); in preserve_pci_rom_image()
68 efi_err("Failed to allocate memory for 'rom'\n"); in preserve_pci_rom_image()
72 memset(rom, 0, sizeof(*rom)); in preserve_pci_rom_image()
74 rom->data.type = SETUP_PCI; in preserve_pci_rom_image()
75 rom->data.len = size - sizeof(struct setup_data); in preserve_pci_rom_image()
76 rom->data.next = 0; in preserve_pci_rom_image()
77 rom->pcilen = romsize; in preserve_pci_rom_image()
80 PCI_VENDOR_ID, 1, &rom->vendor); in preserve_pci_rom_image()
83 efi_err("Failed to read rom->vendor\n"); in preserve_pci_rom_image()
88 PCI_DEVICE_ID, 1, &rom->devid); in preserve_pci_rom_image()
91 efi_err("Failed to read rom->devid\n"); in preserve_pci_rom_image()
95 status = efi_call_proto(pci, get_location, &rom->segment, &rom->bus, in preserve_pci_rom_image()
96 &rom->device, &rom->function); in preserve_pci_rom_image()
101 memcpy(rom->romdata, romimage, romsize); in preserve_pci_rom_image()
102 *__rom = no_free_ptr(rom); in preserve_pci_rom_image()
109 * done directly at the EFI function call-site.
129 data = (struct setup_data *)(unsigned long)params->hdr.setup_data; in setup_efi_pci()
131 while (data && data->next) in setup_efi_pci()
132 data = (struct setup_data *)(unsigned long)data->next; in setup_efi_pci()
136 struct pci_setup_rom *rom; in setup_efi_pci() local
143 status = preserve_pci_rom_image(pci, &rom); in setup_efi_pci()
148 data->next = (unsigned long)rom; in setup_efi_pci()
150 params->hdr.setup_data = (unsigned long)rom; in setup_efi_pci()
152 data = (struct setup_data *)rom; in setup_efi_pci()
186 status = efi_call_proto(p, get_all, new->data, &size); in retrieve_apple_device_properties()
192 new->type = SETUP_APPLE_PROPERTIES; in retrieve_apple_device_properties()
193 new->len = size; in retrieve_apple_device_properties()
194 new->next = 0; in retrieve_apple_device_properties()
196 data = (struct setup_data *)(unsigned long)boot_params->hdr.setup_data; in retrieve_apple_device_properties()
198 boot_params->hdr.setup_data = (unsigned long)new; in retrieve_apple_device_properties()
200 while (data->next) in retrieve_apple_device_properties()
201 data = (struct setup_data *)(unsigned long)data->next; in retrieve_apple_device_properties()
202 data->next = (unsigned long)new; in retrieve_apple_device_properties()
254 if (set_os->version >= 2) { in apple_set_os()
255 status = set_os->set_os_vendor("Apple Inc."); in apple_set_os()
260 if (set_os->version > 0) { in apple_set_os()
262 status = set_os->set_os_version("Mac OS X 10.9"); in apple_set_os()
283 rounded_end - rounded_start, in efi_adjust_memory_range_protection()
292 rounded_end - rounded_start, in efi_adjust_memory_range_protection()
327 unprotect_size = min(rounded_end, next) - unprotect_start; in efi_adjust_memory_range_protection()
388 struct screen_info *si = memset(&boot_params->screen_info, 0, sizeof(*si)); in setup_graphics()
422 if (efi_system_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) in efi_pe_entry()
436 hdr = &boot_params->hdr; in efi_pe_entry()
439 hdr->root_flags = 1; in efi_pe_entry()
440 hdr->vid_mode = 0xffff; in efi_pe_entry()
442 hdr->type_of_loader = 0x21; in efi_pe_entry()
443 hdr->initrd_addr_max = INT_MAX; in efi_pe_entry()
452 efi_set_u64_split((unsigned long)cmdline_ptr, &hdr->cmd_line_ptr, in efi_pe_entry()
453 &boot_params->ext_cmd_line_ptr); in efi_pe_entry()
464 e820ext->type = SETUP_E820_EXT; in add_e820ext()
465 e820ext->len = nr_entries * sizeof(struct boot_e820_entry); in add_e820ext()
466 e820ext->next = 0; in add_e820ext()
468 data = (struct setup_data *)(unsigned long)params->hdr.setup_data; in add_e820ext()
470 while (data && data->next) in add_e820ext()
471 data = (struct setup_data *)(unsigned long)data->next; in add_e820ext()
474 data->next = (unsigned long)e820ext; in add_e820ext()
476 params->hdr.setup_data = (unsigned long)e820ext; in add_e820ext()
482 struct boot_e820_entry *entry = params->e820_table; in setup_e820()
483 struct efi_info *efi = &params->efi_info; in setup_e820()
490 nr_desc = efi->efi_memmap_size / efi->efi_memdesc_size; in setup_e820()
495 unsigned long m = efi->efi_memmap; in setup_e820()
498 m |= (u64)efi->efi_memmap_hi << 32; in setup_e820()
501 d = efi_memdesc_ptr(m, efi->efi_memdesc_size, i); in setup_e820()
502 switch (d->type) { in setup_e820()
526 (d->attribute & EFI_MEMORY_SP)) in setup_e820()
544 process_unaccepted_memory(d->phys_addr, in setup_e820()
545 d->phys_addr + PAGE_SIZE * d->num_pages); in setup_e820()
552 if (prev && prev->type == e820_type && in setup_e820()
553 (prev->addr + prev->size) == d->phys_addr) { in setup_e820()
554 prev->size += d->num_pages << 12; in setup_e820()
558 if (nr_entries == ARRAY_SIZE(params->e820_table)) { in setup_e820()
559 u32 need = (nr_desc - i) * sizeof(struct e820_entry) + in setup_e820()
566 entry = (struct boot_e820_entry *)e820ext->data; in setup_e820()
569 entry->addr = d->phys_addr; in setup_e820()
570 entry->size = d->num_pages << PAGE_SHIFT; in setup_e820()
571 entry->type = e820_type; in setup_e820()
576 if (nr_entries > ARRAY_SIZE(params->e820_table)) { in setup_e820()
577 u32 nr_e820ext = nr_entries - ARRAY_SIZE(params->e820_table); in setup_e820()
580 nr_entries -= nr_e820ext; in setup_e820()
583 params->e820_entries = (u8)nr_entries; in setup_e820()
623 nr_desc = map->map_size / map->desc_size; in allocate_e820()
624 if (nr_desc > ARRAY_SIZE(params->e820_table) - EFI_MMAP_NR_SLACK_SLOTS) { in allocate_e820()
625 u32 nr_e820ext = nr_desc - ARRAY_SIZE(params->e820_table) + in allocate_e820()
652 memcpy(&p->efi->efi_loader_signature, signature, sizeof(__u32)); in exit_boot_func()
655 &p->efi->efi_systab, &p->efi->efi_systab_hi); in exit_boot_func()
656 p->efi->efi_memdesc_size = map->desc_size; in exit_boot_func()
657 p->efi->efi_memdesc_version = map->desc_ver; in exit_boot_func()
658 efi_set_u64_split((unsigned long)map->map, in exit_boot_func()
659 &p->efi->efi_memmap, &p->efi->efi_memmap_hi); in exit_boot_func()
660 p->efi->efi_memmap_size = map->map_size; in exit_boot_func()
673 priv.efi = &boot_params->efi_info; in exit_boot()
685 boot_params->alt_mem_k = 32 * 1024; in exit_boot()
700 efi_err("Unsupported SEV-SNP features detected: 0x%llx\n", in have_unsupported_snp_features()
712 * This only updates seed[0] when running on 32-bit, but in that case, in efi_get_seed()
713 * seed[1] is not used anyway, as there is no virtual KASLR on 32-bit. in efi_get_seed()
734 if (p == cmdline || (p > cmdline && isspace(p[-1]))) { in parse_options()
746 unsigned long addr, alloc_size, entry; in efi_decompress_kernel() local
755 u64 range = KERNEL_IMAGE_SIZE - LOAD_PHYSICAL_ADDR - kernel_total_size; in efi_decompress_kernel()
761 virt_addr &= ~(CONFIG_PHYSICAL_ALIGN - 1); in efi_decompress_kernel()
770 if (efi_system_table->hdr.revision <= EFI_2_00_SYSTEM_TABLE_REVISION && in efi_decompress_kernel()
772 efi_debug("AMI firmware v2.0 or older detected - disabling physical KASLR\n"); in efi_decompress_kernel()
775 efi_info("%s detected on the kernel command line - disabling physical KASLR\n", in efi_decompress_kernel()
780 boot_params_ptr->hdr.loadflags |= KASLR_FLAG; in efi_decompress_kernel()
783 status = efi_random_alloc(alloc_size, CONFIG_PHYSICAL_ALIGN, &addr, in efi_decompress_kernel()
790 entry = decompress_kernel((void *)addr, virt_addr, error); in efi_decompress_kernel()
792 efi_free(alloc_size, addr); in efi_decompress_kernel()
796 *kernel_entry = addr + entry; in efi_decompress_kernel()
798 return efi_adjust_memory_range_protection(addr, kernel_text_size); in efi_decompress_kernel()
820 struct setup_header *hdr = &boot_params->hdr; in efi_stub_entry()
829 if (efi_system_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) in efi_stub_entry()
838 efi_dxe_table->hdr.signature != EFI_DXE_SERVICES_TABLE_SIGNATURE) { in efi_stub_entry()
861 unsigned long cmdline_paddr = ((u64)hdr->cmd_line_ptr | in efi_stub_entry()
862 ((u64)boot_params->ext_cmd_line_ptr << 32)); in efi_stub_entry()
871 hdr->xloadflags |= XLF_MEM_ENCRYPTION; in efi_stub_entry()
884 * If the device path is not present, any command-line initrd= in efi_stub_entry()
888 status = efi_load_initrd(image, hdr->initrd_addr_max, ULONG_MAX, in efi_stub_entry()
892 if (initrd && initrd->size > 0) { in efi_stub_entry()
893 efi_set_u64_split(initrd->base, &hdr->ramdisk_image, in efi_stub_entry()
894 &boot_params->ext_ramdisk_image); in efi_stub_entry()
895 efi_set_u64_split(initrd->size, &hdr->ramdisk_size, in efi_stub_entry()
896 &boot_params->ext_ramdisk_size); in efi_stub_entry()
904 if (boot_params->secure_boot == efi_secureboot_mode_unset) in efi_stub_entry()
905 boot_params->secure_boot = efi_get_secureboot(); in efi_stub_entry()
947 memset(_bss, 0, _ebss - _bss); in efi_handover_entry()