Skip to content

Commit 8fabc62

Browse files
rpptmpe
authored andcommitted
powerpc: Ensure that swiotlb buffer is allocated from low memory
Some powerpc platforms (e.g. 85xx) limit DMA-able memory way below 4G. If a system has more physical memory than this limit, the swiotlb buffer is not addressable because it is allocated from memblock using top-down mode. Force memblock to bottom-up mode before calling swiotlb_init() to ensure that the swiotlb buffer is DMA-able. Reported-by: Christian Zigotzky <[email protected]> Signed-off-by: Mike Rapoport <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 656c21d commit 8fabc62

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

arch/powerpc/mm/mem.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,14 @@ void __init mem_init(void)
289289
BUILD_BUG_ON(MMU_PAGE_COUNT > 16);
290290

291291
#ifdef CONFIG_SWIOTLB
292+
/*
293+
* Some platforms (e.g. 85xx) limit DMA-able memory way below
294+
* 4G. We force memblock to bottom-up mode to ensure that the
295+
* memory allocated in swiotlb_init() is DMA-able.
296+
* As it's the last memblock allocation, no need to reset it
297+
* back to to-down.
298+
*/
299+
memblock_set_bottom_up(true);
292300
swiotlb_init(0);
293301
#endif
294302

0 commit comments

Comments
 (0)