lkml.org 
[lkml]   [2008]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] [29/36] CPA: Only unmap kernel init pages in text mapping when CONFIG_DEBUG_RODATA is set
    Date

    Otherwise the kernel will likely always run with 4K pages instead of 2MB pages,
    which is costly in terms of TLBs.

    Also optimize it a little bit by using only a single change_page_attr() calls.
    This is particularly useful if debugging is enabled inside it because it spams
    the logs much less.

    Signed-off-by: Andi Kleen <ak@suse.de>
    Acked-by: Jan Beulich <jbeulich@novell.com>

    ---
    arch/x86/mm/init_64.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    Index: linux/arch/x86/mm/init_64.c
    ===================================================================
    --- linux.orig/arch/x86/mm/init_64.c
    +++ linux/arch/x86/mm/init_64.c
    @@ -694,13 +694,16 @@ void free_init_pages(char *what, unsigne
    init_page_count(virt_to_page(addr));
    memset((void *)(addr & ~(PAGE_SIZE-1)),
    POISON_FREE_INITMEM, PAGE_SIZE);
    - if (addr >= __START_KERNEL_map)
    - change_page_attr_addr(addr, 1, __pgprot(0));
    free_page(addr);
    totalram_pages++;
    }
    - if (addr > __START_KERNEL_map)
    +#ifdef CONFIG_DEBUG_RODATA
    + if (begin >= __START_KERNEL_map) {
    + change_page_attr_addr(begin, (end - begin)/PAGE_SIZE,
    + __pgprot(0));
    global_flush_tlb();
    + }
    +#endif
    }

    void free_initmem(void)

    \
     
     \ /
      Last update: 2008-01-16 23:29    [W:0.019 / U:0.024 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site