Skip to contentSkip to conversation

s390/dma: provide proper ARCH_ZONE_DMA_BITS value

PATCH Superseded Halil Pasic 4 participants 6 messages Jul 18, 2019 – Jul 23, 2019

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 s390/dma: provide proper ARCH_ZONE_DMA_BITS value

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.

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(+)
arch/s390/include/asm/dma.h +1 -0
index 6f26f35d4a71..3b0329665b13 100644
@@ -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;
Signature · 1 line
2.17.1
#1 lore raw
Quoted 19 lines · On Thu, 18 Jul 2019 19:21:20 +0200 Halil Pasic <[email protected]> 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.

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(+)
arch/s390/include/asm/dma.h +0 -0
index 6f26f35d4a71..3b0329665b13 100644

arch/s390/include/asm/dma.h line 16

Quoted 7 lines
arch/s390/include/asm/dma.h +1 -0
@@ -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

#2 lore raw
In reply to Halil Pasic
Quoted 10 lines · Halil Pasic

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.

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 line 13

Quoted 13 lines
---
 arch/s390/include/asm/dma.h | 1 +
 1 file changed, 1 insertion(+)
arch/s390/include/asm/dma.h +1 -0
index 6f26f35d4a71..3b0329665b13 100644
@@ -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?

#3 lore raw
Quoted 5 lines · On Fri, 19 Jul 2019 08:32:49 +0200 Heiko Carstens <[email protected]>…
Quoted 4 lines · Halil Pasic

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).

Quoted 9 lines
Quoted 6 lines

Let's correct ARCH_ZONE_DMA_BITS value and avoid wrong turns.

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.

Quoted 18 lines

arch/s390/include/asm/dma.h line 13

Quoted 13 lines
---
 arch/s390/include/asm/dma.h | 1 +
 1 file changed, 1 insertion(+)
arch/s390/include/asm/dma.h +1 -0
index 6f26f35d4a71..3b0329665b13 100644
@@ -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.

Quoted 6 lines

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

#4 lore raw
Quoted 14 lines · On Fri, 19 Jul 2019 13:01:30 +0200 Halil Pasic <[email protected]> wrote:
Quoted 14 lines

arch/s390/include/asm/dma.h line 13

Quoted 9 lines
arch/s390/include/asm/dma.h +1 -0
index 6f26f35d4a71..3b0329665b13 100644
@@ -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.

Quoted 1 line
Quoted 1 line

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

Quoted 10 lines
Quoted 5 lines

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.

#5 lore raw
Quoted 17 lines · Halil Pasic
Quoted 14 lines · On Fri, 19 Jul 2019 13:01:30 +0200 Halil Pasic <[email protected]> wrote:
Quoted 14 lines

arch/s390/include/asm/dma.h line 13

Quoted 9 lines
arch/s390/include/asm/dma.h +1 -0
index 6f26f35d4a71..3b0329665b13 100644
@@ -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.

Quoted 6 lines
Quoted 1 line
Quoted 1 line

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.