Re: [LSF/MM TOPIC NOTES] x86 ZONE_DMA love

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Another way we could approach this is to get rid of ZONE_DMA. Make GFP_DMA a flag which doesn't map to a zone. Rather, it redirects to a separate allocator. At boot, we hand all memory under 16MB to the DMA allocator. The DMA allocator can have a shrinker which just hands back all the memory once we're under memory pressure (if it's never had an allocation).

I think we can get rid of the GFP_DMA support in slab/slub. We still need to be able to allocate pages to support bounce buffers / dma_alloc_foo, but there's really no reason to allocate sub-pages at this point.

On Sat, Apr 28, 2018, 14:55 Luis R. Rodriguez, <mcgrof@xxxxxxxxxx> wrote:
On Sat, Apr 28, 2018 at 01:42:21AM -0700, Christoph Hellwig wrote:
> On Fri, Apr 27, 2018 at 04:14:56PM +0000, Luis R. Rodriguez wrote:
> > Do we have a list of users for x86 with a small DMA mask?
> > Or, given that I'm not aware of a tool to be able to look
> > for this in an easy way, would it be good to find out which
> > x86 drivers do have a small mask?
>
> Basically you'll have to grep for calls to dma_set_mask/
> dma_set_coherent_mask/dma_set_mask_and_coherent and their pci_*
> wrappers with masks smaller 32-bit.  Some use numeric values,
> some use DMA_BIT_MASK and various places uses local variables
> or struct members to parse them, so finding them will be a bit
> more work.  Nothing a coccinelle expert couldn't solve, though :)

Thing is unless we have a specific flag used consistently I don't believe we
can do this search with Coccinelle. ie, if we have local variables and based on
some series of variables things are set, this makes the grammatical _expression_
difficult to express.  So Cocinelle is not designed for this purpose.

But I believe smatch [0] is intended exactly for this sort of purpose, is that
right Dan? I gave a cursory look and I think it'd take me significant time to
get such hunt down.

[0] https://lwn.net/Articles/691882/

  Luis

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux