diff options
Diffstat (limited to 'arch/powerpc/sysdev/dart_iommu.c')
-rw-r--r-- | arch/powerpc/sysdev/dart_iommu.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c index a5b40d1460f1..25bc25fe0d93 100644 --- a/arch/powerpc/sysdev/dart_iommu.c +++ b/arch/powerpc/sysdev/dart_iommu.c | |||
@@ -251,8 +251,11 @@ static void allocate_dart(void) | |||
251 | * 16MB (1 << 24) alignment. We allocate a full 16Mb chuck since we | 251 | * 16MB (1 << 24) alignment. We allocate a full 16Mb chuck since we |
252 | * will blow up an entire large page anyway in the kernel mapping. | 252 | * will blow up an entire large page anyway in the kernel mapping. |
253 | */ | 253 | */ |
254 | dart_tablebase = __va(memblock_alloc_base(1UL<<24, | 254 | dart_tablebase = memblock_alloc_try_nid_raw(SZ_16M, SZ_16M, |
255 | 1UL<<24, 0x80000000L)); | 255 | MEMBLOCK_LOW_LIMIT, SZ_2G, |
256 | NUMA_NO_NODE); | ||
257 | if (!dart_tablebase) | ||
258 | panic("Failed to allocate 16MB below 2GB for DART table\n"); | ||
256 | 259 | ||
257 | /* There is no point scanning the DART space for leaks*/ | 260 | /* There is no point scanning the DART space for leaks*/ |
258 | kmemleak_no_scan((void *)dart_tablebase); | 261 | kmemleak_no_scan((void *)dart_tablebase); |