diff options
author | Simon Horman <horms@verge.net.au> | 2006-09-22 16:45:33 +0900 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2006-10-06 12:46:16 +0900 |
commit | 46ecc6c6c77b1fab20b08286209631a00eb1049e (patch) | |
tree | f935cf425d8a65c2bf54743ddeb58f29b551cc56 /purgatory | |
parent | f7c2909515bd0080d9adf3e7923874bbc0ecc033 (diff) | |
download | kexec-tools-46ecc6c6c77b1fab20b08286209631a00eb1049e.tar.gz |
kexec-tools: Explain dummy set_virtual_address_map more clearly
Add a more verbose comment to explain why set_virtual_address_map is
replaced why a dummy function
Signed-Off-By: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'purgatory')
-rw-r--r-- | purgatory/arch/ia64/purgatory-ia64.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/purgatory/arch/ia64/purgatory-ia64.c b/purgatory/arch/ia64/purgatory-ia64.c index 661ab324..312cdcca 100644 --- a/purgatory/arch/ia64/purgatory-ia64.c +++ b/purgatory/arch/ia64/purgatory-ia64.c @@ -240,7 +240,22 @@ ia64_env_setup(struct ia64_boot_param *boot_param, struct ia64_boot_param *new_boot_param = (struct ia64_boot_param *) params->boot_param_base; memcpy(new_boot_param, boot_param, 4096); - /* patch efi_runtime->set_virtual_address_map to a dummy function */ + + /* + * patch efi_runtime->set_virtual_address_map to a dummy function + * + * The EFI specification mandates that set_virtual_address_map only + * takes effect the first time that it is called, and that + * subsequent calls will return error. By replacing it with a + * dummy function the new OS can think it is calling it again + * without either the OS or any buggy EFI implementations getting + * upset. + * + * Note: as the EFI specification says that set_virtual_address_map + * will only take affect the first time it is called, the mapping + * can't be updated, and thus mapping of the old and new OS really + * needs to be the same. + */ len = __dummy_efi_function_end - __dummy_efi_function; memcpy(command_line + command_line_len, __dummy_efi_function, len); |