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

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

diff -u --new-file --recursive --exclude-from ../../exclude v2.2.14/arch/alpha/kernel/core_tsunami.c linux/arch/alpha/kernel/core_tsunami.c
@@ -98,12 +98,12 @@
 		 "pci_addr=0x%p, type1=0x%p)\n",
 		 bus, device_fn, where, pci_addr, type1));
 
-        *type1 = (bus != 0);
+	*type1 = (bus != 0);
 
-        if (hose->pci_first_busno == bus)
+	if (hose->pci_first_busno == bus)
 		bus = 0;
 
-        addr = (bus << 16) | (device_fn << 8) | where;
+	addr = (bus << 16) | (device_fn << 8) | where;
 	addr |= hose->pci_config_space;
 		
 	*pci_addr = addr;
@@ -266,12 +266,20 @@
 	*hose_tail = hose;
 	hose_tail = &hose->next;
 
-	hose->pci_io_space = TSUNAMI_IO(index);
-	hose->pci_mem_space = TSUNAMI_MEM(index);
 	hose->pci_config_space = TSUNAMI_CONF(index);
-	hose->pci_sparse_space = 0;
 	hose->pci_hose_index = index;
 
+	/* This is for userland consumption.  For some reason, the 40-bit
+	   PIO bias that we use in the kernel through KSEG didn't work for
+	   the page table based user mappings.  So make sure we get the
+	   43-bit PIO bias.  */
+	hose->pci_sparse_io_space = 0;
+	hose->pci_sparse_mem_space = 0;
+	hose->pci_dense_io_space
+	  = (TSUNAMI_IO(index) & 0xffffffffff) | 0x80000000000;
+	hose->pci_dense_mem_space
+	  = (TSUNAMI_MEM(index) & 0xffffffffff) | 0x80000000000;
+
 	switch (alpha_use_srm_setup)
 	{
 	default:
@@ -329,7 +337,7 @@
 {
 #ifdef NXM_MACHINE_CHECKS_ON_TSUNAMI
 	extern asmlinkage void entInt(void);
-        unsigned long tmp;
+	unsigned long tmp;
 	
 	/* Ho hum.. init_arch is called before init_IRQ, but we need to be
 	   able to handle machine checks.  So install the handler now.  */

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