summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2012-07-18 19:56:03 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2012-07-18 19:56:03 +0000
commit720cf57e852cca44e81ac4ec10eaa20b91dec41a (patch)
tree48ddea2a0a469547bab7d5c0b91eb555386cb52c /sys/arch
parentf6f3be5cd3807436a12f135b4e6036ca8d0caed5 (diff)
According to Linux, and just verified the hard way, the 8254 timer does not
interrupt on Indy; do not use it on such systems. Then, bring back a clock0 at mainbus attachment to IP22 kernels, and attach it late in the autoconf process if no other device has claimed the clock yet. This means R4000 and R4400 based Indy may experience the lost clock interrupt processor errata again, until a better way to skirt it is found.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/sgi/conf/GENERIC-IP223
-rw-r--r--sys/arch/sgi/conf/RAMDISK-IP223
-rw-r--r--sys/arch/sgi/localbus/int.c9
-rw-r--r--sys/arch/sgi/sgi/mainbus.c7
4 files changed, 17 insertions, 5 deletions
diff --git a/sys/arch/sgi/conf/GENERIC-IP22 b/sys/arch/sgi/conf/GENERIC-IP22
index c1a3e37a674..bbfaa29b495 100644
--- a/sys/arch/sgi/conf/GENERIC-IP22
+++ b/sys/arch/sgi/conf/GENERIC-IP22
@@ -1,4 +1,4 @@
-# $OpenBSD: GENERIC-IP22,v 1.14 2012/07/14 19:53:27 miod Exp $
+# $OpenBSD: GENERIC-IP22,v 1.15 2012/07/18 19:56:02 miod Exp $
#
# THIS KERNEL IS FOR INDIGO (IP20), INDY (IP22) AND INDIGO2 (IP24) SYSTEMS ONLY.
#
@@ -44,6 +44,7 @@ config bsd swap generic
#
mainbus0 at root
cpu* at mainbus0
+clock0 at mainbus0 # scheduling clock on Indy
int0 at mainbus0 # Interrupt Controller and scheduling clock
imc0 at mainbus0 # Memory Controller
diff --git a/sys/arch/sgi/conf/RAMDISK-IP22 b/sys/arch/sgi/conf/RAMDISK-IP22
index 6ac8b3e9eb0..d93c5c40aed 100644
--- a/sys/arch/sgi/conf/RAMDISK-IP22
+++ b/sys/arch/sgi/conf/RAMDISK-IP22
@@ -1,4 +1,4 @@
-# $OpenBSD: RAMDISK-IP22,v 1.11 2012/07/14 19:53:27 miod Exp $
+# $OpenBSD: RAMDISK-IP22,v 1.12 2012/07/18 19:56:02 miod Exp $
#
# THIS KERNEL IS FOR INDIGO (IP20), INDY (IP22) AND INDIGO2 (IP24) SYSTEMS ONLY.
@@ -52,6 +52,7 @@ config bsd root on rd0a swap on rd0b
#
mainbus0 at root
cpu* at mainbus0
+clock0 at mainbus0 # scheduling clock on Indy
int0 at mainbus0 # Interrupt Controller and scheduling clock
imc0 at mainbus0 # Memory Controller
diff --git a/sys/arch/sgi/localbus/int.c b/sys/arch/sgi/localbus/int.c
index e47da144c46..076ea6f17c5 100644
--- a/sys/arch/sgi/localbus/int.c
+++ b/sys/arch/sgi/localbus/int.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: int.c,v 1.5 2012/07/14 19:53:29 miod Exp $ */
+/* $OpenBSD: int.c,v 1.6 2012/07/18 19:56:02 miod Exp $ */
/* $NetBSD: int.c,v 1.24 2011/07/01 18:53:46 dyoung Exp $ */
/*
@@ -366,7 +366,12 @@ int2_attach(struct device *parent, struct device *self, void *aux)
int2_mappable_intr, (void *)1, NULL);
}
- int_8254_cal();
+ /*
+ * The 8254 timer does not interrupt on (some?) IP24 systems.
+ */
+ if (sys_config.system_type == SGI_IP20 ||
+ sys_config.system_subtype == IP22_INDIGO2)
+ int_8254_cal();
}
paddr_t
diff --git a/sys/arch/sgi/sgi/mainbus.c b/sys/arch/sgi/sgi/mainbus.c
index 4118f061fdc..8d4174aa462 100644
--- a/sys/arch/sgi/sgi/mainbus.c
+++ b/sys/arch/sgi/sgi/mainbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.11 2012/07/14 19:53:31 miod Exp $ */
+/* $OpenBSD: mainbus.c,v 1.12 2012/07/18 19:56:02 miod Exp $ */
/*
* Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com)
@@ -112,6 +112,11 @@ mbattach(struct device *parent, struct device *self, void *aux)
caa.caa_maa.maa_name = "imc";
config_found(self, &caa.caa_maa, mbprint);
+ if (md_startclock == NULL) {
+ caa.caa_maa.maa_name = "clock";
+ config_found(self, &caa.caa_maa, mbprint);
+ }
+
ip22_post_autoconf();
break;