lkml.org 
[lkml]   [2008]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH] x86: make 64bit efi to use ioremap_cache for efi_ioremap
    Date
    Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>

    ---
    arch/x86/kernel/efi.c | 5 +----
    arch/x86/kernel/efi_64.c | 27 ++-------------------------
    include/asm-x86/efi.h | 8 ++------
    include/asm-x86/fixmap_64.h | 3 ---
    4 files changed, 5 insertions(+), 38 deletions(-)

    Index: linux-2.6/arch/x86/kernel/efi.c
    ===================================================================
    --- 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);

    md->virt_addr = (u64) (unsigned long) va;

    Index: linux-2.6/arch/x86/kernel/efi_64.c
    ===================================================================
    --- 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);
    @@ -97,26 +97,3 @@ void __init efi_call_phys_epilog(void)
    early_runtime_code_mapping_set_exec(0);
    }

    -void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size)
    -{
    - static unsigned pages_mapped __initdata;
    - unsigned i, pages;
    - unsigned long offset;
    -
    - pages = PFN_UP(phys_addr + size) - PFN_DOWN(phys_addr);
    - offset = phys_addr & ~PAGE_MASK;
    - phys_addr &= PAGE_MASK;
    -
    - if (pages_mapped + pages > MAX_EFI_IO_PAGES)
    - return NULL;
    -
    - for (i = 0; i < pages; i++) {
    - __set_fixmap(FIX_EFI_IO_MAP_FIRST_PAGE - pages_mapped,
    - phys_addr, PAGE_KERNEL);
    - phys_addr += PAGE_SIZE;
    - pages_mapped++;
    - }
    -
    - return (void __iomem *)__fix_to_virt(FIX_EFI_IO_MAP_FIRST_PAGE - \
    - (pages_mapped - pages)) + offset;
    -}
    Index: linux-2.6/include/asm-x86/efi.h
    ===================================================================
    --- linux-2.6.orig/include/asm-x86/efi.h
    +++ linux-2.6/include/asm-x86/efi.h
    @@ -33,12 +33,8 @@ extern unsigned long asmlinkage efi_call
    #define efi_call_virt6(f, a1, a2, a3, a4, a5, a6) \
    efi_call_virt(f, a1, a2, a3, a4, a5, a6)

    -#define efi_ioremap(addr, size) ioremap_cache(addr, size)
    -
    #else /* !CONFIG_X86_32 */

    -#define MAX_EFI_IO_PAGES 100
    -
    extern u64 efi_call0(void *fp);
    extern u64 efi_call1(void *fp, u64 arg1);
    extern u64 efi_call2(void *fp, u64 arg1, u64 arg2);
    @@ -86,10 +82,10 @@ extern u64 efi_call6(void *fp, u64 arg1,
    efi_call6((void *)(efi.systab->runtime->f), (u64)(a1), (u64)(a2), \
    (u64)(a3), (u64)(a4), (u64)(a5), (u64)(a6))

    -extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size);
    -
    #endif /* CONFIG_X86_32 */

    +#define efi_ioremap(addr, size) ioremap_cache(addr, size)
    +
    extern void efi_reserve_early(void);
    extern void efi_call_phys_prelog(void);
    extern void efi_call_phys_epilog(void);
    Index: linux-2.6/include/asm-x86/fixmap_64.h
    ===================================================================
    --- linux-2.6.orig/include/asm-x86/fixmap_64.h
    +++ linux-2.6/include/asm-x86/fixmap_64.h
    @@ -43,9 +43,6 @@ enum fixed_addresses {
    FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
    FIX_IO_APIC_BASE_0,
    FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS - 1,
    - FIX_EFI_IO_MAP_LAST_PAGE,
    - FIX_EFI_IO_MAP_FIRST_PAGE = FIX_EFI_IO_MAP_LAST_PAGE
    - + MAX_EFI_IO_PAGES - 1,
    #ifdef CONFIG_PARAVIRT
    FIX_PARAVIRT_BOOTMAP,
    #endif

    \
     
     \ /
      Last update: 2008-10-04 08:27    [W:0.036 / U:0.468 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site