• Home
  • Raw
  • Download

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

1 // SPDX-License-Identifier: GPL-2.0-only
3 /* -----------------------------------------------------------------------
7 * ----------------------------------------------------------------------- */
21 /* Maximum physical address for 64-bit kernel with 4-level paging */
31 struct pci_setup_rom *rom = NULL; in preserve_pci_rom_image() local
49 size = romsize + sizeof(*rom); in preserve_pci_rom_image()
52 (void **)&rom); in preserve_pci_rom_image()
54 efi_err("Failed to allocate memory for 'rom'\n"); in preserve_pci_rom_image()
58 memset(rom, 0, sizeof(*rom)); in preserve_pci_rom_image()
60 rom->data.type = SETUP_PCI; in preserve_pci_rom_image()
61 rom->data.len = size - sizeof(struct setup_data); in preserve_pci_rom_image()
62 rom->data.next = 0; in preserve_pci_rom_image()
63 rom->pcilen = romsize; in preserve_pci_rom_image()
64 *__rom = rom; in preserve_pci_rom_image()
67 PCI_VENDOR_ID, 1, &rom->vendor); in preserve_pci_rom_image()
70 efi_err("Failed to read rom->vendor\n"); in preserve_pci_rom_image()
75 PCI_DEVICE_ID, 1, &rom->devid); in preserve_pci_rom_image()
78 efi_err("Failed to read rom->devid\n"); in preserve_pci_rom_image()
82 status = efi_call_proto(pci, get_location, &rom->segment, &rom->bus, in preserve_pci_rom_image()
83 &rom->device, &rom->function); in preserve_pci_rom_image()
88 memcpy(rom->romdata, romimage, romsize); in preserve_pci_rom_image()
92 efi_bs_call(free_pool, rom); in preserve_pci_rom_image()
99 * done directly at the EFI function call-site.
134 data = (struct setup_data *)(unsigned long)params->hdr.setup_data; in setup_efi_pci()
136 while (data && data->next) in setup_efi_pci()
137 data = (struct setup_data *)(unsigned long)data->next; in setup_efi_pci()
141 struct pci_setup_rom *rom; in setup_efi_pci() local
148 status = preserve_pci_rom_image(pci, &rom); in setup_efi_pci()
153 data->next = (unsigned long)rom; in setup_efi_pci()
155 params->hdr.setup_data = (unsigned long)rom; in setup_efi_pci()
157 data = (struct setup_data *)rom; in setup_efi_pci()
194 status = efi_call_proto(p, get_all, new->data, &size); in retrieve_apple_device_properties()
200 new->type = SETUP_APPLE_PROPERTIES; in retrieve_apple_device_properties()
201 new->len = size; in retrieve_apple_device_properties()
202 new->next = 0; in retrieve_apple_device_properties()
204 data = (struct setup_data *)(unsigned long)boot_params->hdr.setup_data; in retrieve_apple_device_properties()
206 boot_params->hdr.setup_data = (unsigned long)new; in retrieve_apple_device_properties()
208 while (data->next) in retrieve_apple_device_properties()
209 data = (struct setup_data *)(unsigned long)data->next; in retrieve_apple_device_properties()
210 data->next = (unsigned long)new; in retrieve_apple_device_properties()
287 si->orig_video_isVGA = VIDEO_TYPE_EFI; in setup_uga()
289 si->lfb_depth = 32; in setup_uga()
290 si->lfb_width = width; in setup_uga()
291 si->lfb_height = height; in setup_uga()
293 si->red_size = 8; in setup_uga()
294 si->red_pos = 16; in setup_uga()
295 si->green_size = 8; in setup_uga()
296 si->green_pos = 8; in setup_uga()
297 si->blue_size = 8; in setup_uga()
298 si->blue_pos = 0; in setup_uga()
299 si->rsvd_size = 8; in setup_uga()
300 si->rsvd_pos = 24; in setup_uga()
318 si = &boot_params->screen_info; in setup_graphics()
369 if (efi_system_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) in efi_pe_entry()
379 image_offset = (void *)startup_32 - image_base; in efi_pe_entry()
390 hdr = &boot_params->hdr; in efi_pe_entry()
393 memcpy(&hdr->jump, image_base + 512, in efi_pe_entry()
394 sizeof(struct setup_header) - offsetof(struct setup_header, jump)); in efi_pe_entry()
400 hdr->root_flags = 1; in efi_pe_entry()
401 hdr->vid_mode = 0xffff; in efi_pe_entry()
402 hdr->boot_flag = 0xAA55; in efi_pe_entry()
404 hdr->type_of_loader = 0x21; in efi_pe_entry()
412 &hdr->cmd_line_ptr, &boot_params->ext_cmd_line_ptr); in efi_pe_entry()
414 hdr->ramdisk_image = 0; in efi_pe_entry()
415 hdr->ramdisk_size = 0; in efi_pe_entry()
422 hdr->setup_data = 0; in efi_pe_entry()
438 e820ext->type = SETUP_E820_EXT; in add_e820ext()
439 e820ext->len = nr_entries * sizeof(struct boot_e820_entry); in add_e820ext()
440 e820ext->next = 0; in add_e820ext()
442 data = (struct setup_data *)(unsigned long)params->hdr.setup_data; in add_e820ext()
444 while (data && data->next) in add_e820ext()
445 data = (struct setup_data *)(unsigned long)data->next; in add_e820ext()
448 data->next = (unsigned long)e820ext; in add_e820ext()
450 params->hdr.setup_data = (unsigned long)e820ext; in add_e820ext()
456 struct boot_e820_entry *entry = params->e820_table; in setup_e820()
457 struct efi_info *efi = &params->efi_info; in setup_e820()
464 nr_desc = efi->efi_memmap_size / efi->efi_memdesc_size; in setup_e820()
469 unsigned long m = efi->efi_memmap; in setup_e820()
472 m |= (u64)efi->efi_memmap_hi << 32; in setup_e820()
475 d = efi_early_memdesc_ptr(m, efi->efi_memdesc_size, i); in setup_e820()
476 switch (d->type) { in setup_e820()
500 (d->attribute & EFI_MEMORY_SP)) in setup_e820()
519 if (prev && prev->type == e820_type && in setup_e820()
520 (prev->addr + prev->size) == d->phys_addr) { in setup_e820()
521 prev->size += d->num_pages << 12; in setup_e820()
525 if (nr_entries == ARRAY_SIZE(params->e820_table)) { in setup_e820()
526 u32 need = (nr_desc - i) * sizeof(struct e820_entry) + in setup_e820()
533 entry = (struct boot_e820_entry *)e820ext->data; in setup_e820()
536 entry->addr = d->phys_addr; in setup_e820()
537 entry->size = d->num_pages << PAGE_SHIFT; in setup_e820()
538 entry->type = e820_type; in setup_e820()
543 if (nr_entries > ARRAY_SIZE(params->e820_table)) { in setup_e820()
544 u32 nr_e820ext = nr_entries - ARRAY_SIZE(params->e820_table); in setup_e820()
547 nr_entries -= nr_e820ext; in setup_e820()
550 params->e820_entries = (u8)nr_entries; in setup_e820()
595 if (nr_desc > ARRAY_SIZE(params->e820_table)) { in allocate_e820()
596 u32 nr_e820ext = nr_desc - ARRAY_SIZE(params->e820_table); in allocate_e820()
619 memcpy(&p->efi->efi_loader_signature, signature, sizeof(__u32)); in exit_boot_func()
622 &p->efi->efi_systab, &p->efi->efi_systab_hi); in exit_boot_func()
623 p->efi->efi_memdesc_size = map->desc_size; in exit_boot_func()
624 p->efi->efi_memdesc_version = map->desc_ver; in exit_boot_func()
625 efi_set_u64_split((unsigned long)map->map, in exit_boot_func()
626 &p->efi->efi_memmap, &p->efi->efi_memmap_hi); in exit_boot_func()
627 p->efi->efi_memmap_size = map->map_size; in exit_boot_func()
640 priv.efi = &boot_params->efi_info; in exit_boot()
652 boot_params->alt_mem_k = 32 * 1024; in exit_boot()
672 struct setup_header *hdr = &boot_params->hdr; in efi_main()
679 if (efi_system_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) in efi_main()
688 * The maximum address for 64-bit is 1 << 46 for 4-level paging. This in efi_main()
690 * compile-time constant if 5-level paging is configured, so we instead in efi_main()
693 * For 32-bit, the maximum address is complicated to figure out, for in efi_main()
700 * to handle the case of systemd-boot booting a unified kernel image, in efi_main()
708 buffer_start = ALIGN(bzimage_addr - image_offset, in efi_main()
709 hdr->kernel_alignment); in efi_main()
710 buffer_end = buffer_start + hdr->init_size; in efi_main()
717 hdr->init_size, hdr->init_size, in efi_main()
718 hdr->pref_address, in efi_main()
719 hdr->kernel_alignment, in efi_main()
741 unsigned long cmdline_paddr = ((u64)hdr->cmd_line_ptr | in efi_main()
742 ((u64)boot_params->ext_cmd_line_ptr << 32)); in efi_main()
755 * If the device path is not present, any command-line initrd= in efi_main()
760 unsigned long addr, size; in efi_main() local
762 status = efi_load_initrd(image, hdr->initrd_addr_max, ULONG_MAX, in efi_main()
769 if (initrd && initrd->size > 0) { in efi_main()
770 efi_set_u64_split(initrd->base, &hdr->ramdisk_image, in efi_main()
771 &boot_params->ext_ramdisk_image); in efi_main()
772 efi_set_u64_split(initrd->size, &hdr->ramdisk_size, in efi_main()
773 &boot_params->ext_ramdisk_size); in efi_main()
781 if (boot_params->secure_boot == efi_secureboot_mode_unset) in efi_main()
782 boot_params->secure_boot = efi_get_secureboot(); in efi_main()