Skip to contentSkip to conversation

setup max dma addr earlier on hp boxes

PATCH New Alex Williamson 1 participant 1 message Apr 5, 2004

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 setup max dma addr earlier on hp boxes

sba_iommu was setting up MAX_DMA_ADDRESS way too late to do any
good. This patch makes it get setup via platform_setup, so it's ready for paging_init(). All pages should show up in zone DMA now. Against latest 2.6. Thanks,

Alex

Signature · 50 lines
Alex Williamson                             HP Linux & Open Source Lab

=== arch/ia64/hp/common/sba_iommu.c 1.41 vs edited ==--- 1.41/arch/ia64/hp/common/sba_iommu.c	Mon Mar 22 03:52:38 2004
+++ edited/arch/ia64/hp/common/sba_iommu.c	Mon Apr  5 11:14:20 2004
@@ -1732,7 +1732,6 @@
 
 	if ((long) ~iovp_mask > (long) ia64_max_iommu_merge_mask)
 		ia64_max_iommu_merge_mask = ~iovp_mask;
-	MAX_DMA_ADDRESS = ~0UL;
 
 	printk(KERN_INFO PFX
 		"%s %d.%d HPA 0x%lx IOVA space %dMb at 0x%lx\n",
@@ -1965,6 +1964,18 @@
 }
 
 subsys_initcall(sba_init); /* must be initialized after ACPI etc., but before any drivers... */
+
+extern void dig_setup(char**);
+/*
+ * MAX_DMA_ADDRESS needs to be setup prior to paging_init to do any good,
+ * so we use the platform_setup hook to fix it up.
+ */
+void __init
+sba_setup(char **cmdline_p)
+{
+	MAX_DMA_ADDRESS = ~0UL;
+	dig_setup(cmdline_p);
+}
 
 static int __init
 nosbagart(char *str)
=== include/asm-ia64/machvec_hpzx1.h 1.10 vs edited ==--- 1.10/include/asm-ia64/machvec_hpzx1.h	Tue Mar 23 17:28:49 2004
+++ edited/include/asm-ia64/machvec_hpzx1.h	Mon Apr  5 11:07:18 2004
@@ -2,6 +2,7 @@
 #define _ASM_IA64_MACHVEC_HPZX1_h
 
 extern ia64_mv_setup_t dig_setup;
+extern ia64_mv_setup_t			sba_setup;
 extern ia64_mv_dma_alloc_coherent	sba_alloc_coherent;
 extern ia64_mv_dma_free_coherent	sba_free_coherent;
 extern ia64_mv_dma_map_single		sba_map_single;
@@ -19,7 +20,7 @@
  * the macros are used directly.
  */
 #define platform_name			"hpzx1"
-#define platform_setup			dig_setup
+#define platform_setup			sba_setup
 #define platform_dma_init		machvec_noop
 #define platform_dma_alloc_coherent	sba_alloc_coherent
 #define platform_dma_free_coherent	sba_free_coherent