[1/1] s390/dma: provide proper ARCH_ZONE_DMA_BITS value
diff mbox series

Message ID 20190718172120.69947-1-pasic@linux.ibm.com
State New
Headers show
Series
  • [1/1] s390/dma: provide proper ARCH_ZONE_DMA_BITS value
Related show

Commit Message

Halil Pasic July 18, 2019, 5:21 p.m. UTC
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(+)

Comments

Petr Tesarik July 18, 2019, 8:54 p.m. UTC | #1
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
Heiko Carstens July 19, 2019, 6:32 a.m. UTC | #2
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?
Halil Pasic July 19, 2019, 11:01 a.m. UTC | #3
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
Halil Pasic July 23, 2019, 12:32 p.m. UTC | #4
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.
Christoph Hellwig July 23, 2019, 3:52 p.m. UTC | #5
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.

Patch
diff mbox series

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;