Anyone brought up 9984 NIC on x86-64?

Adrian Chadd adrian at
Wed Jul 13 12:17:47 PDT 2016

On 13 July 2016 at 10:54, Ben Greear <greearb at> wrote:

> For reference, this is today's un-patched linux-ath:
> DMA: Out of SW-IOMMU space for 770224 bytes at device 0000:05:00.0
> Kernel panic - not syncing: DMA: Random memory could be DMA read


So I looked at this code in a bit more detail. Ideally for large
requests you shouldn't be asking for separate bounce buffers, you'd
just allocate memory that was within the 32 bit physmem boundary so
you don't /need/ a bounce buffer.

That's likely what's tripping things up.

Now, on freebsd I'd just request memory that was under 32 bit and the
memory allocator would fail the allocation if it wasn't available.
Bounce buffers get used for general system things like mbufs (our
skbs), disk buffers, etc that can come from any memory and need a
temporary mapping. This kind of stuff isn't temporary.

So to save me having to dig into what the linux kernel allocator
provides (since I'm really a freebsd developer at heart!), what's the
"right" way to maintain large, non-ephermal memory allocation that may
have to do DMA? eg, like descriptor rings, etc.


More information about the ath10k mailing list