• Alan Hourihane's avatar
    [PATCH] AGP performance fixes · 88d51967
    Alan Hourihane authored
    AGP allocation/deallocation is suffering major performance issues due to
    the nature of global_flush_tlb() being called on every change_page_attr()
    call.
    
    For small allocations this isn't really seen, but when you start allocating
    50000 pages of AGP space, for say, texture memory, then things can take
    seconds to complete.
    
    In some cases the situation is doubled or even quadrupled in the time due
    to SMP, or a deallocation, then a new reallocation.  I've had a case of
    upto 20 seconds wait time to deallocate and reallocate AGP space.
    
    This patch fixes the problem by making it the caller's responsibility to
    call global_flush_tlb(), and so removes it from every instance of mapping a
    page into AGP space until the time that all change_page_attr() changes are
    done.
    Signed-off-by: default avatarDave Jones <davej@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    88d51967
backend.c 8.51 KB