khc at pm.waw.pl
Wed Sep 23 10:40:41 EDT 2009
Mikael Pettersson <mikpe at it.uu.se> writes:
> I strongly suspect that something on the USB or networking side
> is allocating I/O buffers without observing the correct DMA APIs.
At least the network stack allocates buffers ignoring the DMA masks.
The buffers may be allocated by one device (driver) and passed to
another device. The only plausible way to fix it is IMHO limiting all
skb allocations to the common mask (drivers would be free to either
handle or drop skbs outside of their mask).
This is relatively easy to implement and I'm going to try it, when time
> I think Krzysztof Halasa mentioned running ixp4xx devices with 128MB
> RAM and a kernel hacked so kernel-private allocations would always be
> served from memory below 64MB. I think he mentioned doing that because
> of networking components that would ignore PCI DMA mask constraints.
Right. This works fine for network buffers because they aren't that
large. The current patch is suboptimal, though.
More information about the linux-arm-kernel