Since commit 33b85447fa61946b ("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.
Unified · Split
| @@ -178,7 +178,6 @@ extern void __init efi_uv1_memmap_phys_epilog(pgd_t *save_pgd); · 177 unmodified lines | ||
| 178 | 178 | |
| 179 | 179 | struct efi_setup_data { |
| 180 | 180 | u64 fw_vendor; |
| 181 | − u64 runtime; | |
| 182 | 181 | u64 tables; |
| 183 | 182 | u64 smbios; |
| 184 | 183 | u64 reserved[8]; |
| @@ -142,7 +142,6 @@ prepare_add_efi_setup_data(struct boot_params *params, · 141 unmodified lines | ||
| 142 | 142 | struct efi_setup_data *esd = (void *)sd + sizeof(struct setup_data); |
| 143 | 143 | |
| 144 | 144 | esd->fw_vendor = efi.fw_vendor; |
| 145 | − esd->runtime = efi.runtime; | |
| 146 | 145 | esd->tables = efi.config_table; |
| 147 | 146 | esd->smbios = efi.smbios; |
| 148 | 147 | |
| @@ -376,6 +376,7 @@ static int __init efi_systab_init(u64 phys) · 375 unmodified lines | ||
| 376 | 376 | systab64->con_out > U32_MAX || |
| 377 | 377 | systab64->stderr_handle > U32_MAX || |
| 378 | 378 | systab64->stderr > U32_MAX || |
| 379 | + systab64->runtime > U32_MAX || | |
| 379 | 380 | systab64->boottime > U32_MAX; |
| 380 | 381 | |
| 381 | 382 | if (efi_setup) { |
| @@ -388,17 +389,14 @@ static int __init efi_systab_init(u64 phys) · 6 unmodified lines | ||
| 388 | 389 | } |
| 389 | 390 | |
| 390 | 391 | efi_systab.fw_vendor = (unsigned long)data->fw_vendor; |
| 391 | − efi_systab.runtime = (void *)(unsigned long)data->runtime; | |
| 392 | 392 | efi_systab.tables = (unsigned long)data->tables; |
| 393 | 393 | |
| 394 | 394 | over4g |= data->fw_vendor > U32_MAX || |
| 395 | − data->runtime > U32_MAX || | |
| 396 | 395 | data->tables > U32_MAX; |
| 397 | 396 | |
| 398 | 397 | early_memunmap(data, sizeof(*data)); |
| 399 | 398 | } else { |
| 400 | 399 | over4g |= systab64->fw_vendor > U32_MAX || |
| 401 | − systab64->runtime > U32_MAX || | |
| 402 | 400 | systab64->tables > U32_MAX; |
| 403 | 401 | } |
| 404 | 402 | } else { |