Merge tag 'efi-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi into x86/urgent
Pull EFI fixes from Matt Fleming: * Fix an EFI boot issue preventing a Parallels virtual machine from booting because the upper 32-bits of the EFI memmap pointer were being discarded in setup_e820(). (Dmitry Skorodumov) * Validate that the "efi" kernel parameter gets used with an argument, otherwise we will oops. (Ricardo Neri) Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -1193,6 +1193,10 @@ static efi_status_t setup_e820(struct boot_params *params,
|
|||||||
unsigned int e820_type = 0;
|
unsigned int e820_type = 0;
|
||||||
unsigned long m = efi->efi_memmap;
|
unsigned long m = efi->efi_memmap;
|
||||||
|
|
||||||
|
#ifdef CONFIG_X86_64
|
||||||
|
m |= (u64)efi->efi_memmap_hi << 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
d = (efi_memory_desc_t *)(m + (i * efi->efi_memdesc_size));
|
d = (efi_memory_desc_t *)(m + (i * efi->efi_memdesc_size));
|
||||||
switch (d->type) {
|
switch (d->type) {
|
||||||
case EFI_RESERVED_TYPE:
|
case EFI_RESERVED_TYPE:
|
||||||
|
@@ -972,6 +972,11 @@ u64 efi_mem_attributes(unsigned long phys_addr)
|
|||||||
|
|
||||||
static int __init arch_parse_efi_cmdline(char *str)
|
static int __init arch_parse_efi_cmdline(char *str)
|
||||||
{
|
{
|
||||||
|
if (!str) {
|
||||||
|
pr_warn("need at least one option\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
if (parse_option_str(str, "old_map"))
|
if (parse_option_str(str, "old_map"))
|
||||||
set_bit(EFI_OLD_MEMMAP, &efi.flags);
|
set_bit(EFI_OLD_MEMMAP, &efi.flags);
|
||||||
if (parse_option_str(str, "debug"))
|
if (parse_option_str(str, "debug"))
|
||||||
|
@@ -58,6 +58,11 @@ bool efi_runtime_disabled(void)
|
|||||||
|
|
||||||
static int __init parse_efi_cmdline(char *str)
|
static int __init parse_efi_cmdline(char *str)
|
||||||
{
|
{
|
||||||
|
if (!str) {
|
||||||
|
pr_warn("need at least one option\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
if (parse_option_str(str, "noruntime"))
|
if (parse_option_str(str, "noruntime"))
|
||||||
disable_runtime = true;
|
disable_runtime = true;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user