Subject: Re: panic: MMU fault
To: None <Ian.Dall@dsto.defence.gov.au>
From: Gordon W. Ross <gwr@mc.com>
List: port-sun3
Date: 04/04/1996 23:30:36
> Date: Fri, 5 Apr 1996 19:09:31 +0930
> From: Ian.Dall@dsto.defence.gov.au
> I have attempted to build an up to date kernel. On March 29, I fetched
> everything which looked like it had changed. (I know there is sup for
> this, but sup is not one of the protocols which is transparent through
> our firewall).
>
> Anyway, I think I got everything, and I definitely got all of sys/arch/sun3
> and sys/arch/m68k. The system repeatably crashes when I do a heavy ppp
> transfer. Here is the stack trace (modulo transcription errors):
>
> _trap(8,145,ec)
> sun3_mmu_specific(?)
> _dumpmem(ed2fca8,80,0,e06875b,e089980) + 38
> _regdump(ed2fcf8,80,2304,e505800,0) + 196
> _trap(8,105,e0797b6) + 202
> sun3_mmu_specific(?)
> _zsoverrun(e512000,e0797b6) + 38
> _zstty_softint(e505864,1,3,118,e50dfa0) + 4a
...
Oh. (blush) I don't know why I didn't notice a warning on this.
The function _zsoverrun is defined with three arguments, not two.
Here is a patch for src/sys/dev/ic/z8530tty.c:
*** z8530tty.c.~3~ Thu Mar 21 16:49:14 1996
--- z8530tty.c Thu Apr 4 23:24:29 1996
***************
*** 1,4 ****
! /* $NetBSD: z8530tty.c,v 1.5 1996/03/18 23:06:02 gwr Exp $ */
/*
* Copyright (c) 1994 Gordon W. Ross
--- 1,4 ----
! </* $NetBSD: z8530tty.c,v 1.5 1996/03/18 23:06:02 gwr Exp $ */
/*
* Copyright (c) 1994 Gordon W. Ross
***************
*** 929,935 ****
if (intr_flags & INTR_RX_OVERRUN) {
/* May turn this on again below. */
intr_flags &= ~INTR_RX_OVERRUN;
! zsoverrun(zst, "ring");
}
/*
--- 929,935 ----
if (intr_flags & INTR_RX_OVERRUN) {
/* May turn this on again below. */
intr_flags &= ~INTR_RX_OVERRUN;
! zsoverrun(zst, &zst->zst_rotime, "ring");
}
/*
***************
*** 955,961 ****
/* If set, it is from the loop above. */
if (intr_flags & INTR_RX_OVERRUN) {
! zsoverrun(zst, "fifo");
}
if (intr_flags & INTR_TX_EMPTY) {
--- 955,961 ----
/* If set, it is from the loop above. */
if (intr_flags & INTR_RX_OVERRUN) {
! zsoverrun(zst, &zst->zst_fotime, "fifo");
}
if (intr_flags & INTR_TX_EMPTY) {