On s390 ZONE_DMA is up to 2G, i.e. ARCH_ZONE_DMA_BITS should be 31 bits. The current value is 24 and makes __dma_direct_alloc_pages() take a wrong turn first (but __dma_direct_alloc_pages() recovers then). Let's correct ARCH_ZONE_DMA_BITS value and avoid wrong turns. Signed-off-by: Halil Pasic <pasic@xxxxxxxxxxxxx> Reported-by: Petr Tesarik <ptesarik@xxxxxxx> Fixes: c61e9637340e ("dma-direct: add support for allocation from ZONE_DMA and ZONE_DMA32") --- arch/s390/include/asm/dma.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/s390/include/asm/dma.h b/arch/s390/include/asm/dma.h index 6f26f35d4a71..3b0329665b13 100644 --- a/arch/s390/include/asm/dma.h +++ b/arch/s390/include/asm/dma.h @@ -10,6 +10,7 @@ * by the 31 bit heritage. */ #define MAX_DMA_ADDRESS 0x80000000 +#define ARCH_ZONE_DMA_BITS 31 #ifdef CONFIG_PCI extern int isa_dma_bridge_buggy; -- 2.17.1