• Alexander Shishkin's avatar
    perf/x86/intel/pt: Get rid of reverse lookup table for ToPA · 39152ee5
    Alexander Shishkin authored
    In order to quickly find a ToPA entry by its page offset in the buffer,
    we're using a reverse lookup table. The problem with it is that it's a
    large array of mostly similar pointers, especially so now that we're
    using high order allocations from the page allocator. Because its size
    is limited to whatever is the maximum for kmalloc(), it places a limit
    on the number of ToPA entries per buffer, and therefore, on the total
    buffer size, which otherwise doesn't have to be there.
    
    Replace the reverse lookup table with a simple runtime lookup. With the
    high order AUX allocations in place, the runtime penalty of such a lookup
    is much smaller and in cases where all entries in a ToPA table are of
    the same size, the complexity is O(1).
    Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20190821124727.73310-7-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    39152ee5
pt.c 39.4 KB