• C
    powerpc/8xx: Map linear kernel RAM with 8M pages · a372acfa
    Christophe Leroy 提交于
    On a live running system (VoIP gateway for Air Trafic Control), over
    a 10 minutes period (with 277s idle), we get 87 millions DTLB misses
    and approximatly 35 secondes are spent in DTLB handler.
    This represents 5.8% of the overall time and even 10.8% of the
    non-idle time.
    Among those 87 millions DTLB misses, 15% are on user addresses and
    85% are on kernel addresses. And within the kernel addresses, 93%
    are on addresses from the linear address space and only 7% are on
    addresses from the virtual address space.
    
    MPC8xx has no BATs but it has 8Mb page size. This patch implements
    mapping of kernel RAM using 8Mb pages, on the same model as what is
    done on the 40x.
    
    In 4k pages mode, each PGD entry maps a 4Mb area: we map every two
    entries to the same 8Mb physical page. In each second entry, we add
    4Mb to the page physical address to ease life of the FixupDAR
    routine. This is just ignored by HW.
    
    In 16k pages mode, each PGD entry maps a 64Mb area: each PGD entry
    will point to the first page of the area. The DTLB handler adds
    the 3 bits from EPN to map the correct page.
    
    With this patch applied, we now get only 13 millions TLB misses
    during the 10 minutes period. The idle time has increased to 313s
    and the overall time spent in DTLB miss handler is 6.3s, which
    represents 1% of the overall time and 2.2% of non-idle time.
    Signed-off-by: NChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: NScott Wood <oss@buserror.net>
    a372acfa
Makefile 1.6 KB