[maemo-developers] ARM MMU questions

From: Simon Pickering S.G.Pickering at bath.ac.uk
Date: Wed Oct 24 14:38:21 EEST 2007
Hello all,

I'm looking to share the framebuffer between the ARM CPU and DSP and
therefore would like to ask a few questions about the ARM MMU and in
particular TLBs.

When I try mapping the framebuffer the following messages appear in
dmesg:

[10790.375152] omapdsp: 3 frame buffers found. we use first one.
[10790.375213] MMU: mapping in ARM MMU, v=0xe0300000, p=0x87e00000,
sz=0x10000
[10790.375305] MMU: mapping in ARM MMU, v=0xe0310000, p=0x87e10000,
sz=0x10000
[10790.375396] MMU: mapping in ARM MMU, v=0xe0320000, p=0x87e20000,
sz=0x10000
[10790.375457] MMU: mapping in ARM MMU, v=0xe0330000, p=0x87e30000,
sz=0x10000
[10790.375518] MMU: mapping in ARM MMU, v=0xe0340000, p=0x87e40000,
sz=0x10000
[10790.375610] MMU: mapping in ARM MMU, v=0xe0350000, p=0x87e50000,
sz=0x10000
[10790.375671] MMU: TLB is full.
[10790.375701] MMU: unmapping in ARM MMU, v=0xe0350000, sz=0x10000
[10790.375793] MMU: unmapping in ARM MMU, v=0xe0300000, sz=0x10000
[10790.375854] MMU: unmapping in ARM MMU, v=0xe0310000, sz=0x10000
[10790.375946] MMU: unmapping in ARM MMU, v=0xe0320000, sz=0x10000
[10790.376007] MMU: unmapping in ARM MMU, v=0xe0330000, sz=0x10000
[10790.376068] MMU: unmapping in ARM MMU, v=0xe0340000, sz=0x10000
[10790.376098] omapdsp: exmap failure.

So it appears that I'm running out of TLBs in the ARM MMU. The ARM MMU
is handling 65,536 (0x10000) bytes of memory per TLB, while I need
something like 768,000 bytes (800 x 480 x 2) for my framebuffer, which
would require just under 12 TLBs. My understanding is that the ARM CPUs
have 32 TLBs in total, and it appears that we have 6 free at the moment.
If it possible to map larger page sizes in the ARM MMU (i.e. so I need
fewer TLBs?)

Is this the right way to look at this problem? I don't know much about
TLBs and MMUs, just what I've learned browsing the kernel code to try
and work out what's causing this problem.

It's interesting that the 770 has a mapped framebuffer. I wonder how it
gets away with doing this while the N800 can't (if it's not by using a
larger page size)?

Thanks,


Simon


More information about the maemo-developers mailing list