Date: Mon, 28 May 2001 00:25:45 +0200 From: Jesper Skriver <jesper@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Cc: Jesper Skriver <jesper@FreeBSD.org> Subject: kern/27694: Panic in csa(4) Message-ID: <20010528002545.A15786@skriver.dk>
next in thread | raw e-mail | index | archive | help
>Number: 27694
>Category: kern
>Synopsis: Panic in csa(4)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun May 27 15:30:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Jesper Skriver
>Release: FreeBSD 5.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD tam 5.0-CURRENT FreeBSD 5.0-CURRENT #4: Sat May 26 20:54:27 CEST 2001 root@tam:/usr/obj/usr/src/sys/TAM2 i386
>Description:
About every other time I boot my IBM ThinkPad 600E I get this panic
(hand typed, as I don't have a second machine here to be able to use a
serial console).
Fatal trap 12: page fault while in kernel mode
Fault virtual address = 0x28
Fault code = supervisor read, page not present
instruction pointer = 0x8:0xc0159bd3
stack pointer = 0x10:0xc5e3ef44
frame pointer = 0x10:0xc5e3ef48
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def21 1, gran 1
processor eflags = interrupt enabled, resume, IOPL=0
current process = 16 (irq11: pccbb0+++)
kernel: type 12 trap, code=0
Stopped at csa_readio+0x17: movl 0x28(%eax),%edx
db> trace
csa_readio(c0d0c804,0,c0d0c700,c0d1f400,4) at csa_readio+0x17
csa_intr(c0d0c800) at csa_intr+0x14
ithread_loop(c0d1f400,c5e3efa0) at ithread_loop+0x23f
fork_exit(c018dd20,c0d1f400,c4e2efa8) at fork_exit+0x59
fork_trampoline() at fork_trampoline+0x8
When I see this, I just power it off, and boot again, and usually it
will boot.
(kgdb) l *csa_readio+0x17
0xc0159cd3 is in csa_readio (machine/bus_at386.h:205).
200 }
201
202 static __inline u_int32_t
203 bus_space_read_4(bus_space_tag_t tag, bus_space_handle_t handle,
204 bus_size_t offset)
205 {
206 #if defined(_I386_BUS_PIO_H_)
207 #if defined(_I386_BUS_MEMIO_H_)
208 if (tag == I386_BUS_SPACE_IO)
209 #endif
(kgdb) l *csa_intr+0x14
0xc015a5ec is in csa_intr (/usr/src/sys/dev/sound/pci/csapcm.c:685).
680 csa_intr (void *p)
681 {
682 struct csa_info *csa = p;
683
684 if ((csa->binfo->hisr & HISR_VC0) != 0)
685 chn_intr(csa->pch.channel);
686 if ((csa->binfo->hisr & HISR_VC1) != 0)
687 chn_intr(csa->rch.channel);
688 }
689
(kgdb) l *ithread_loop+0x23f
0xc018e077 is in ithread_loop (/usr/src/sys/kern/kern_intr.c:518).
513 free(ih, M_ITHREAD);
514 mtx_unlock(&Giant);
515 goto restart;
516 }
517 ih->ih_handler(ih->ih_argument);
518 if ((ih->ih_flags & IH_MPSAFE) == 0)
519 mtx_unlock(&Giant);
520 }
521 }
522
(kgdb) l *fork_exit+0x59
0xc018d221 is in fork_exit (/usr/src/sys/kern/kern_fork.c:737).
732
733 /*
734 * Check if a kernel thread misbehaved and returned from its main
735 * function.
736 */
737 PROC_LOCK(p);
738 if (p->p_flag & P_KTHREAD) {
739 PROC_UNLOCK(p);
740 mtx_lock(&Giant);
741 printf("Kernel thread \"%s\" (pid %d) exited prematurely.\n",
(kgdb) l *fork_trampoline+0x8
No source file for address 0xc0299f6c.
looking in src/sys/dev/sound/pci/csa.c at the csa_readio() function,
bus_space_read_4() is called once:
if (offset < BA0_AC97_RESET)
return bus_space_read_4(rman_get_bustag(resp->io), rman_get_bushandle(resp->io), offset) & 0xffffffff;
else {
if (csa_readcodec(resp, offset, &ul))
ul = 0;
return (ul);
}
So it's probably where it goes wrong, any idea why ?
>How-To-Repeat:
I can reproduce relative easy, but it could be related to my specific HW.
>Fix:
None known.
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010528002545.A15786>
