On Thu, Jul 18, 2019 at 07:21:20PM +0200, Halil Pasic wrote: > 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") Please don't add linebreaks to "Fixes:" tags. > --- > 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 powerpc has this in arch/powerpc/include/asm/page.h. This really should be consistently defined in the same header file across architectures. Christoph, what is the preferred header file for this definition? I'd also rather say it would be better to move the #ifndef ARCH_ZONE_DMA_BITS check to a common code header file instead of having it in a C file, and make it more obvious in which header file architectures should/can override the default, no?