On Thu, Nov 12, 2015 at 03:40:20PM +0000, Matt Fleming wrote:
> We are relying on the pre-existing mappings in 'trampoline_pgd' when
> accessing function arguments in the EFI mixed mode thunking code.
> 
> Instead let's map memory explicitly so that things will continue to
> work when we move to a separate page table in the future.
> 
> Cc: Borislav Petkov <b...@alien8.de>
> Cc: Sai Praneeth Prakhya <sai.praneeth.prak...@intel.com>
> Signed-off-by: Matt Fleming <m...@codeblueprint.co.uk>
> ---
>  arch/x86/platform/efi/efi_64.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
> index c8b58ac47b77..634536034e32 100644
> --- a/arch/x86/platform/efi/efi_64.c
> +++ b/arch/x86/platform/efi/efi_64.c
> @@ -144,6 +144,7 @@ void efi_sync_low_kernel_mappings(void)
>  int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
>  {
>       unsigned long pfn, text;
> +     efi_memory_desc_t *md;
>       struct page *page;
>       unsigned npages;
>       pgd_t *pgd;
> @@ -200,6 +201,25 @@ int __init efi_setup_page_tables(unsigned long 
> pa_memmap, unsigned num_pages)
>  
>       efi_scratch.phys_stack += PAGE_SIZE; /* stack grows down */
>  
> +     /*
> +      * Map all of RAM so that we can access arguments in the 1:1

Why "all of RAM"?

> +      * mapping when making EFI runtime calls.
> +      */
> +     for_each_efi_memory_desc(&memmap, md) {
> +             if (md->type != EFI_CONVENTIONAL_MEMORY &&
> +                 md->type != EFI_LOADER_DATA &&
> +                 md->type != EFI_LOADER_CODE)

That's mapping all those EFI_* types...

> +                     continue;
> +
> +             pfn = md->phys_addr >> PAGE_SHIFT;
> +             npages = md->num_pages;
> +
> +             if (kernel_map_pages_in_pgd(pgd, pfn, md->phys_addr, npages, 
> 0)) {
> +                     pr_err("Failed to map 1:1 memory\n");
> +                     return 1;
> +             }
> +     }
> +
>       return 0;
>  }
>  
> -- 
> 2.6.2
> 
> 

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to