diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2012-07-18 19:56:03 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2012-07-18 19:56:03 +0000 |
commit | 720cf57e852cca44e81ac4ec10eaa20b91dec41a (patch) | |
tree | 48ddea2a0a469547bab7d5c0b91eb555386cb52c /sys/arch | |
parent | f6f3be5cd3807436a12f135b4e6036ca8d0caed5 (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-IP22 | 3 | ||||
-rw-r--r-- | sys/arch/sgi/conf/RAMDISK-IP22 | 3 | ||||
-rw-r--r-- | sys/arch/sgi/localbus/int.c | 9 | ||||
-rw-r--r-- | sys/arch/sgi/sgi/mainbus.c | 7 |
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; |