Skip to content

Commit

Permalink
efi/arm*: Take the Memory Attributes table into account
Browse files Browse the repository at this point in the history
Call into the generic memory attributes table support code at the
appropriate times during the init sequence so that the UEFI Runtime
Services region are mapped according to the strict permissions it
specifies.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Peter Jones <pjones@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-efi@vger.kernel.org
Link: http://lkml.kernel.org/r/1461614832-17633-15-git-send-email-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Ard Biesheuvel authored and Ingo Molnar committed Apr 28, 2016
1 parent 10f0d2f commit 789957e
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 2 deletions.
2 changes: 2 additions & 0 deletions arch/arm64/include/asm/efi.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ extern void efi_init(void);

int efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md);

#define efi_set_mapping_permissions efi_create_mapping

#define efi_call_virt(f, ...) \
({ \
efi_##f##_t *__f; \
Expand Down
1 change: 1 addition & 0 deletions drivers/firmware/efi/arm-init.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,7 @@ void __init efi_init(void)
return;

reserve_regions();
efi_memattr_init();
early_memunmap(efi.memmap.map, params.mmap_size);

if (IS_ENABLED(CONFIG_ARM)) {
Expand Down
10 changes: 8 additions & 2 deletions drivers/firmware/efi/arm-runtime.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,15 @@ static bool __init efi_virtmap_init(void)
systab_found = true;
}
}
if (!systab_found)
if (!systab_found) {
pr_err("No virtual mapping found for the UEFI System Table\n");
return systab_found;
return false;
}

if (efi_memattr_apply_permissions(&efi_mm, efi_set_mapping_permissions))
return false;

return true;
}

/*
Expand Down

0 comments on commit 789957e

Please sign in to comment.