]> git.baikalelectronics.ru Git - kernel.git/commit
mm: page_frag: Introduce page_frag_alloc_align()
authorKevin Hao <haokexin@gmail.com>
Thu, 4 Feb 2021 10:56:35 +0000 (18:56 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 6 Feb 2021 19:57:28 +0000 (11:57 -0800)
commit41efed5074dceeafd9866d2ba2b784abf0bf5979
tree2bb2a9ee6ed3e4766ba90da3da0b8c521fbfe94d
parent42e1440e85e4a3720300852b98a74f2f2aa982c5
mm: page_frag: Introduce page_frag_alloc_align()

In the current implementation of page_frag_alloc(), it doesn't have
any align guarantee for the returned buffer address. But for some
hardwares they do require the DMA buffer to be aligned correctly,
so we would have to use some workarounds like below if the buffers
allocated by the page_frag_alloc() are used by these hardwares for
DMA.
    buf = page_frag_alloc(really_needed_size + align);
    buf = PTR_ALIGN(buf, align);

These codes seems ugly and would waste a lot of memories if the buffers
are used in a network driver for the TX/RX. So introduce
page_frag_alloc_align() to make sure that an aligned buffer address is
returned.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/gfp.h
mm/page_alloc.c