Skip to content

Commit 0a67361

Browse files
committed
efi/x86: Remove runtime table address from kexec EFI setup data
Since commit 33b8544 ("efi/x86: Drop two near identical versions of efi_runtime_init()"), we no longer map the EFI runtime services table before calling SetVirtualAddressMap(), which means we don't need the 1:1 mapped physical address of this table, and so there is no point in passing the address via EFI setup data on kexec boot. Note that the kexec tools will still look for this address in sysfs, so we still need to provide it. Tested-by: Tony Luck <[email protected]> # arch/ia64 Signed-off-by: Ard Biesheuvel <[email protected]>
1 parent 06c0bd9 commit 0a67361

File tree

3 files changed

+1
-5
lines changed

3 files changed

+1
-5
lines changed

arch/x86/include/asm/efi.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ extern void __init efi_uv1_memmap_phys_epilog(pgd_t *save_pgd);
178178

179179
struct efi_setup_data {
180180
u64 fw_vendor;
181-
u64 runtime;
182181
u64 tables;
183182
u64 smbios;
184183
u64 reserved[8];

arch/x86/kernel/kexec-bzimage64.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ prepare_add_efi_setup_data(struct boot_params *params,
142142
struct efi_setup_data *esd = (void *)sd + sizeof(struct setup_data);
143143

144144
esd->fw_vendor = efi.fw_vendor;
145-
esd->runtime = efi.runtime;
146145
esd->tables = efi.config_table;
147146
esd->smbios = efi.smbios;
148147

arch/x86/platform/efi/efi.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ static int __init efi_systab_init(u64 phys)
376376
systab64->con_out > U32_MAX ||
377377
systab64->stderr_handle > U32_MAX ||
378378
systab64->stderr > U32_MAX ||
379+
systab64->runtime > U32_MAX ||
379380
systab64->boottime > U32_MAX;
380381

381382
if (efi_setup) {
@@ -388,17 +389,14 @@ static int __init efi_systab_init(u64 phys)
388389
}
389390

390391
efi_systab.fw_vendor = (unsigned long)data->fw_vendor;
391-
efi_systab.runtime = (void *)(unsigned long)data->runtime;
392392
efi_systab.tables = (unsigned long)data->tables;
393393

394394
over4g |= data->fw_vendor > U32_MAX ||
395-
data->runtime > U32_MAX ||
396395
data->tables > U32_MAX;
397396

398397
early_memunmap(data, sizeof(*data));
399398
} else {
400399
over4g |= systab64->fw_vendor > U32_MAX ||
401-
systab64->runtime > U32_MAX ||
402400
systab64->tables > U32_MAX;
403401
}
404402
} else {

0 commit comments

Comments
 (0)