Message ID | 20190718172120.69947-1-pasic@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/1] s390/dma: provide proper ARCH_ZONE_DMA_BITS value | expand |
On Thu, 18 Jul 2019 19:21:20 +0200 Halil Pasic <pasic@linux.ibm.com> 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@linux.ibm.com> > Reported-by: Petr Tesarik <ptesarik@suse.cz> > 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; Looks good to me. Petr T
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@linux.ibm.com> > Reported-by: Petr Tesarik <ptesarik@suse.cz> > 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?
On Fri, 19 Jul 2019 08:32:49 +0200 Heiko Carstens <heiko.carstens@de.ibm.com> wrote: > 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@linux.ibm.com> > > Reported-by: Petr Tesarik <ptesarik@suse.cz> > > Fixes: c61e9637340e ("dma-direct: add support for allocation from > > ZONE_DMA and ZONE_DMA32") > > Please don't add linebreaks to "Fixes:" tags. > Will remember that, thanks! I was not aware of the rule and checkpatch did not complain. > > --- > > 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? +1 I will wait for Christoph's answer with a respin. Thanks for having a look. Regards, Halil
On Fri, 19 Jul 2019 13:01:30 +0200 Halil Pasic <pasic@linux.ibm.com> wrote: > > > 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? ping Christoph could you please answer Heiko's question, so I can do my respin. Regards, Halil > > > > 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? > > +1 > > I will wait for Christoph's answer with a respin. Thanks for having a > look.
On Tue, Jul 23, 2019 at 02:32:26PM +0200, Halil Pasic wrote: > On Fri, 19 Jul 2019 13:01:30 +0200 > Halil Pasic <pasic@linux.ibm.com> wrote: > > > > > 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? > > ping > > Christoph could you please answer Heiko's question, so I can do my > respin. page.h is fine for now. dma.h is odd for sure as it is for legacy ISA DMA only.
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;
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@linux.ibm.com> Reported-by: Petr Tesarik <ptesarik@suse.cz> 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(+)