lkml.org 
[lkml]   [2008]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH] x86: make 64bit efi to use ioremap_cache for efi_ioremap
Hi, Yinghai,

On Sat, Oct 4, 2008 at 2:23 PM, Yinghai Lu <yhlu.kernel@gmail.com> wrote:
[...]
> --- linux-2.6.orig/arch/x86/kernel/efi.c
> +++ linux-2.6/arch/x86/kernel/efi.c
> @@ -475,10 +475,7 @@ void __init efi_enter_virtual_mode(void)
> size = md->num_pages << EFI_PAGE_SHIFT;
> end = md->phys_addr + size;
>
> - if (PFN_UP(end) <= max_low_pfn_mapped)
> - va = __va(md->phys_addr);
> - else
> - va = efi_ioremap(md->phys_addr, size);
> + va = efi_ioremap(md->phys_addr, size);

Using __va and efi_ioremap() here is to make EFI support compatible
with kexec. Because EFI provide only efi_enter_virtual_mode(), no
efi_leave_virtual_mode(), we should make EFI runtime memory area
mapped to same virtual memory area in original kernel and kexeced
kernel, so that the EFI runtime services can be used in kexeced
kernel.

[...]
> --- linux-2.6.orig/arch/x86/kernel/efi_64.c
> +++ linux-2.6/arch/x86/kernel/efi_64.c
> @@ -46,8 +46,8 @@ static void __init early_mapping_set_exe
> {
> unsigned long num_pages;
>
> - start &= PMD_MASK;
> - end = (end + PMD_SIZE - 1) & PMD_MASK;
> + start &= PAGE_MASK;
> + end = (end + PAGE_SIZE - 1) & PAGE_MASK;
> num_pages = (end - start) >> PAGE_SHIFT;
> if (executable)
> set_memory_x((unsigned long)__va(start), num_pages);

early_mapping_set_exe() may be called before page allocator is
available. Using PAGE_MASK may make set_memory_x() allocate new page,
while using PMD_MASK will not.

Best Regards,
Huang Ying


\
 
 \ /
  Last update: 2008-10-04 11:39    [W:0.053 / U:0.124 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site