• Christophe Leroy's avatar
    powerpc/8xx: Map IMMR area with 512k page at a fixed address · 4badd43a
    Christophe Leroy authored
    Once the linear memory space has been mapped with 8Mb pages, as
    seen in the related commit, we get 11 millions DTLB missed during
    the reference 600s period. 77% of the misses are on user addresses
    and 23% are on kernel addresses (1 fourth for linear address space
    and 3 fourth for virtual address space)
    
    Traditionaly, each driver manages one computer board which has its
    own components with its own memory maps.
    But on embedded chips like the MPC8xx, the SOC has all registers
    located in the same IO area.
    
    When looking at ioremaps done during startup, we see that
    many drivers are re-mapping small parts of the IMMR for their own use
    and all those small pieces gets their own 4k page, amplifying the
    number of TLB misses: in our system we get 0xff000000 mapped 31 times
    and 0xff003000 mapped 9 times.
    
    Even if each part of IMMR was mapped only once with 4k pages, it would
    still be several small mappings towards linear area.
    
    This patch maps the IMMR with a single 512k page.
    
    With this patch applied, the number of DTLB misses during the 10 min
    period is reduced to 11.8 millions for a duration of 5.8s, which
    represents 2% of the non-idle time hence yet another 10% reduction.
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: default avatarScott Wood <oss@buserror.net>
    4badd43a
mmu_decl.h 4.7 KB