patch-2.4.5 linux/arch/alpha/kernel/core_tsunami.c

Next file: linux/arch/alpha/kernel/entry.S
Previous file: linux/arch/alpha/kernel/core_cia.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.4/linux/arch/alpha/kernel/core_tsunami.c linux/arch/alpha/kernel/core_tsunami.c
@@ -11,6 +11,7 @@
 #include <linux/pci.h>
 #include <linux/sched.h>
 #include <linux/init.h>
+#include <linux/bootmem.h>
 
 #include <asm/ptrace.h>
 #include <asm/system.h>
@@ -222,7 +223,6 @@
 	   it's the shifted tag bits.  */
 	value = (start & 0xffff0000) >> 12;
 
-	wmb();
 	*csr = value;
 	mb();
 	*csr;
@@ -278,6 +278,16 @@
 #define FN __FUNCTION__
 
 static void __init
+tsunami_monster_window_enable(tsunami_pchip * pchip)
+{
+	volatile unsigned long * csr = &pchip->pctl.csr;
+
+	*csr |= pctl_m_mwin;
+	mb();
+	*csr;
+}
+
+static void __init
 tsunami_init_one_pchip(tsunami_pchip *pchip, int index)
 {
 	struct pci_controller *hose;
@@ -358,7 +368,13 @@
 	 * address range.
 	 */
 	hose->sg_isa = iommu_arena_new(hose, 0x00800000, 0x00800000, 0);
-	hose->sg_pci = iommu_arena_new(hose, 0xc0000000, 0x08000000, 0);
+	{
+		unsigned long size = 0x08000000;
+		if (max_low_pfn > (0x80000000 >> PAGE_SHIFT))
+			size = 0x40000000;
+		hose->sg_pci = iommu_arena_new(hose, 0xc0000000, size, 0);
+	}
+	
 	__direct_map_base = 0x40000000;
 	__direct_map_size = 0x80000000;
 
@@ -379,6 +395,9 @@
 	pchip->tba[3].csr  = virt_to_phys(hose->sg_pci->ptes);
 
 	tsunami_pci_tbi(hose, 0, -1);
+
+	/* Enable the Monster Window to make DAC pci64 possible. */
+	tsunami_monster_window_enable(pchip);
 }
 
 void __init

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)