diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/firmware/efi/efi-stub-helper.c | 92 |
1 files changed, 46 insertions, 46 deletions
diff --git a/drivers/firmware/efi/efi-stub-helper.c b/drivers/firmware/efi/efi-stub-helper.c index 8c7839437c1..5cea5d5a9a1 100644 --- a/drivers/firmware/efi/efi-stub-helper.c +++ b/drivers/firmware/efi/efi-stub-helper.c @@ -11,7 +11,7 @@ */ #define EFI_READ_CHUNK_SIZE (1024 * 1024) -struct initrd { +struct file_info { efi_file_handle_t *handle; u64 size; }; @@ -264,10 +264,10 @@ static void efi_free(efi_system_table_t *sys_table_arg, unsigned long size, /* - * Check the cmdline for a LILO-style initrd= arguments. + * Check the cmdline for a LILO-style file= arguments. * - * We only support loading an initrd from the same filesystem as the - * kernel image. + * We only support loading a file from the same filesystem as + * the kernel image. */ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, efi_loaded_image_t *image, @@ -276,19 +276,19 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, unsigned long *load_addr, unsigned long *load_size) { - struct initrd *initrds; - unsigned long initrd_addr; + struct file_info *files; + unsigned long file_addr; efi_guid_t fs_proto = EFI_FILE_SYSTEM_GUID; - u64 initrd_total; + u64 file_size_total; efi_file_io_interface_t *io; efi_file_handle_t *fh; efi_status_t status; - int nr_initrds; + int nr_files; char *str; int i, j, k; - initrd_addr = 0; - initrd_total = 0; + file_addr = 0; + file_size_total = 0; str = cmd_line; @@ -303,7 +303,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, if (!str || !*str) return EFI_SUCCESS; - for (nr_initrds = 0; *str; nr_initrds++) { + for (nr_files = 0; *str; nr_files++) { str = strstr(str, option_string); if (!str) break; @@ -318,21 +318,21 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, str++; } - if (!nr_initrds) + if (!nr_files) return EFI_SUCCESS; status = efi_call_phys3(sys_table_arg->boottime->allocate_pool, EFI_LOADER_DATA, - nr_initrds * sizeof(*initrds), - &initrds); + nr_files * sizeof(*files), + &files); if (status != EFI_SUCCESS) { - efi_printk(sys_table_arg, "Failed to alloc mem for file load\n"); + efi_printk(sys_table_arg, "Failed to alloc mem for file handle list\n"); goto fail; } str = cmd_line; - for (i = 0; i < nr_initrds; i++) { - struct initrd *initrd; + for (i = 0; i < nr_files; i++) { + struct file_info *file; efi_file_handle_t *h; efi_file_info_t *info; efi_char16_t filename_16[256]; @@ -347,7 +347,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, str += strlen(option_string); - initrd = &initrds[i]; + file = &files[i]; p = filename_16; /* Skip any leading slashes */ @@ -378,13 +378,13 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, image->device_handle, &fs_proto, &io); if (status != EFI_SUCCESS) { efi_printk(sys_table_arg, "Failed to handle fs_proto\n"); - goto free_initrds; + goto free_files; } status = efi_call_phys2(io->open_volume, io, &fh); if (status != EFI_SUCCESS) { efi_printk(sys_table_arg, "Failed to open volume\n"); - goto free_initrds; + goto free_files; } } @@ -397,7 +397,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, goto close_handles; } - initrd->handle = h; + file->handle = h; info_sz = 0; status = efi_call_phys4(h->get_info, h, &info_guid, @@ -431,37 +431,37 @@ grow: goto close_handles; } - initrd->size = file_sz; - initrd_total += file_sz; + file->size = file_sz; + file_size_total += file_sz; } - if (initrd_total) { + if (file_size_total) { unsigned long addr; /* - * Multiple initrd's need to be at consecutive - * addresses in memory, so allocate enough memory for - * all the initrd's. + * Multiple files need to be at consecutive addresses in memory, + * so allocate enough memory for all the files. This is used + * for loading multiple files. */ - status = efi_high_alloc(sys_table_arg, initrd_total, 0x1000, - &initrd_addr, max_addr); + status = efi_high_alloc(sys_table_arg, file_size_total, 0x1000, + &file_addr, max_addr); if (status != EFI_SUCCESS) { - efi_printk(sys_table_arg, "Failed to alloc highmem for initrds\n"); + efi_printk(sys_table_arg, "Failed to alloc highmem for files\n"); goto close_handles; } /* We've run out of free low memory. */ - if (initrd_addr > max_addr) { + if (file_addr > max_addr) { efi_printk(sys_table_arg, "We've run out of free low memory\n"); status = EFI_INVALID_PARAMETER; - goto free_initrd_total; + goto free_file_total; } - addr = initrd_addr; - for (j = 0; j < nr_initrds; j++) { + addr = file_addr; + for (j = 0; j < nr_files; j++) { u64 size; - size = initrds[j].size; + size = files[j].size; while (size) { u64 chunksize; if (size > EFI_READ_CHUNK_SIZE) @@ -469,36 +469,36 @@ grow: else chunksize = size; status = efi_call_phys3(fh->read, - initrds[j].handle, + files[j].handle, &chunksize, addr); if (status != EFI_SUCCESS) { efi_printk(sys_table_arg, "Failed to read file\n"); - goto free_initrd_total; + goto free_file_total; } addr += chunksize; size -= chunksize; } - efi_call_phys1(fh->close, initrds[j].handle); + efi_call_phys1(fh->close, files[j].handle); } } - efi_call_phys1(sys_table_arg->boottime->free_pool, initrds); + efi_call_phys1(sys_table_arg->boottime->free_pool, files); - *load_addr = initrd_addr; - *load_size = initrd_total; + *load_addr = file_addr; + *load_size = file_size_total; return status; -free_initrd_total: - efi_free(sys_table_arg, initrd_total, initrd_addr); +free_file_total: + efi_free(sys_table_arg, file_size_total, file_addr); close_handles: for (k = j; k < i; k++) - efi_call_phys1(fh->close, initrds[k].handle); -free_initrds: - efi_call_phys1(sys_table_arg->boottime->free_pool, initrds); + efi_call_phys1(fh->close, files[k].handle); +free_files: + efi_call_phys1(sys_table_arg->boottime->free_pool, files); fail: *load_addr = 0; *load_size = 0; |