s390/setup: fix DMA_API_DEBUG warnings
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Tue, 16 Jun 2015 12:03:37 +0000 (14:03 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 18 Jun 2015 13:45:46 +0000 (15:45 +0200)
Addresses from the usable space in [_ehead, _stext] lead to false
positives in DMA_API_DEBUG code (which will complain when an address
is in [_text, _etext]).

Avoid these warnings by not using that memory in case of
CONFIG_DMA_API_DEBUG=y.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/setup.c

index bdde603..af4f41d 100644 (file)
@@ -640,19 +640,24 @@ static void __init check_initrd(void)
 }
 
 /*
- * Reserve all kernel text
+ * Reserve memory used for lowcore/command line/kernel image.
  */
 static void __init reserve_kernel(void)
 {
-       unsigned long start_pfn;
-       start_pfn = PFN_UP(__pa(&_end));
+       unsigned long start_pfn = PFN_UP(__pa(&_end));
 
+#ifdef CONFIG_DMA_API_DEBUG
        /*
-        * Reserve memory used for lowcore/command line/kernel image.
+        * DMA_API_DEBUG code stumbles over addresses from the
+        * range [_ehead, _stext]. Mark the memory as reserved
+        * so it is not used for CONFIG_DMA_API_DEBUG=y.
         */
+       memblock_reserve(0, PFN_PHYS(start_pfn));
+#else
        memblock_reserve(0, (unsigned long)_ehead);
        memblock_reserve((unsigned long)_stext, PFN_PHYS(start_pfn)
                         - (unsigned long)_stext);
+#endif
 }
 
 static void __init reserve_elfcorehdr(void)