summaryrefslogtreecommitdiff
path: root/sys/arch/sgi/pci
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2009-07-01 21:56:39 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2009-07-01 21:56:39 +0000
commit120e4235c1e0f40a9d9a2b0db84f1dbc97912bc3 (patch)
tree502c4209de3d0aba95950eeb456805f7630a5771 /sys/arch/sgi/pci
parent0d94a2f192e73199851c56fe6342bcdb84e8fb9a (diff)
The widget mapping code has been written back when I was only working on
Octane support. The Octane being a single-node system, address space is ludicrous enough to allow the whole address space of every widget to be directly accessible in whole, using the address bits reserved to nasid. However, on IP27 and IP35, things do not work this way - while we still have the low 16MB address space of each widget available (the so-called ``short window''), access to other parts of the wiget address space is done through translation slots (IOTTE) at the Hub I/O space level, on a per-node basis. Given the imminent release lock, give up completely on ``large'' mappings of widgets, and restrict ourselves to short window operation, all the time (thus reinforcing the use of devio registers to map pci resources on xbridge). A proper interface to request mappings of specific widget areas, either directly on Octane, or through IOTTE if available on Origin, will appear post-release. No functional change (except from silently repairing Octane support which the previous xbridge commit silently broke).
Diffstat (limited to 'sys/arch/sgi/pci')
-rw-r--r--sys/arch/sgi/pci/ioc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/arch/sgi/pci/ioc.c b/sys/arch/sgi/pci/ioc.c
index 01a21ea1e39..a19240806f4 100644
--- a/sys/arch/sgi/pci/ioc.c
+++ b/sys/arch/sgi/pci/ioc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ioc.c,v 1.17 2009/06/21 18:03:15 miod Exp $ */
+/* $OpenBSD: ioc.c,v 1.18 2009/07/01 21:56:37 miod Exp $ */
/*
* Copyright (c) 2008 Joel Sing.
@@ -182,12 +182,13 @@ ioc_attach(struct device *parent, struct device *self, void *aux)
sc->sc_mem_bus_space->bus_base = memh;
sc->sc_mem_bus_space->_space_read_1 = xbow_read_1;
sc->sc_mem_bus_space->_space_read_2 = xbow_read_2;
+ sc->sc_mem_bus_space->_space_read_raw_2 = xbow_read_raw_2;
sc->sc_mem_bus_space->_space_write_1 = xbow_write_1;
sc->sc_mem_bus_space->_space_write_2 = xbow_write_2;
+ sc->sc_mem_bus_space->_space_write_raw_2 = xbow_write_raw_2;
- /* XXX undo IP27 xbridge weird mapping */
- if (sys_config.system_type != SGI_OCTANE)
- sc->sc_mem_bus_space->_space_map = xbow_space_map_short;
+ /* XXX undo xbridge mapping games */
+ sc->sc_mem_bus_space->_space_map = xbow_space_map;
sc->sc_memt = sc->sc_mem_bus_space;
sc->sc_memh = memh;