NetBSD Problem Report #17178
Received: (qmail 7996 invoked by uid 605); 5 Jun 2002 22:55:36 -0000
Message-Id: <Pine.SOL.4.33.0206052339170.16383-100000@draco.cus.cam.ac.uk>
Date: Wed, 5 Jun 2002 23:55:34 +0100 (BST)
From: Ben Harris <bjh21@netbsd.org>
Sender: gnats-bugs-owner@netbsd.org
To: <gnats-bugs@gnats.netbsd.org>
Subject: Non-emulated page fault with intr_depth > 0 in seeq8005 driver
>Number: 17178
>Category: port-acorn32
>Synopsis: Non-emulated page fault with intr_depth > 0 in seeq8005 driver
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: bjh21
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Jun 05 22:56:00 +0000 2002
>Closed-Date: Fri Jun 07 10:26:02 +0000 2002
>Last-Modified: Fri Jun 07 10:26:02 +0000 2002
>Originator: Ben Harris
>Release: 1.6_BETA1 tgm build of 2002-05-25
>Organization:
>Environment:
Risc PC, SA110 CPU, RPC_WSCONS kernel
>Description:
While scp'ing my X sets to another machine, I got on the console:
Non-emulated page fault with intr_depth > 0
Data abort: 'Translation fault (page)' status=007 address=f3d34000 PC=f019f52c
Stopped in pid 855 (ssh) at 0xf019f52c: ldrb r12, [r1], #0x0001
db>
(gdb) info sym 0xf019f52c
outsw + 24 in section .text
Stack backtrace follows (frame contents elided to save my fingers):
0xf0038e0c (rlv=0xf0039d74) seeq8005_attach + 4996 in section .text
0xf0039d38 (rlv=0xf0039cc4) seeq8005_attach + 8880 in section .text
0xf0039af4 (rlv=0xf003a19c) seeq8005_attach + 8300 in section .text
0xf003a060 (rlv=0xf0039fe0) seeq8005intr + 440 in section .text
0xf0039eb4 (rlv=0xf01b2a60) seeq8005intr + 12 in section .text
Running "sync" from ddb gets me "panic: wddump: polled command has been
queued".
>How-To-Repeat:
Unknown, since I've only seen it this once.
>Fix:
>Release-Note:
>Audit-Trail:
From: Ben Harris <bjh21@netbsd.org>
To: <gnats-bugs@gnats.netbsd.org>
Cc:
Subject: port-acorn32/17178: more knowledge
Date: Thu, 6 Jun 2002 11:23:37 +0100 (BST)
I think that stack backtrace is actually:
outsw
ea_writebuf
ea_writembuf
ea_txpacket
ea_txint
seeq8005intr
The fault occurs while reading the second byte of a pair, which means that
outsw() must have been passed a non-16-bit-aligned pointer. This probably
means that ea_writebuf() got passed an odd-length, odd-address block which
ended on a page boundary, rounded it up to an even size and hence tried to
transfer a byte from an invalid page. This would usually be caught by
DIAGNOSTIC, but that's turned off in RPC_WSCONS kernels.
I'll fix this by having ea_writebuf detect odd-address buffers and handle
them more appropriately.
--
Ben Harris <bjh21@netbsd.org>
Portmaster, NetBSD/acorn26 <URL:http://www.netbsd.org/Ports/acorn26/>
State-Changed-From-To: open->analyzed
State-Changed-By: bjh21
State-Changed-When: Thu Jun 6 03:27:15 PDT 2002
State-Changed-Why:
I think I know what's going on here.
Responsible-Changed-From-To: port-acorn32-maintainer->bjh21
Responsible-Changed-By: bjh21
Responsible-Changed-When: Thu Jun 6 03:27:15 PDT 2002
Responsible-Changed-Why:
My driver; my problem.
State-Changed-From-To: analyzed->closed
State-Changed-By: bjh21
State-Changed-When: Fri Jun 7 03:20:53 PDT 2002
State-Changed-Why:
Fixed by seeq8005.c rev 1.33.
Pullup to 1.6 branch requested [pullup-1-6 #201].
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.