Date: Mon, 25 Aug 2003 13:49:30 -0700 (PDT) From: Nate Lawson <nate@root.org> To: ken@kdm.org Cc: current@freebsd.org Subject: scsi-da does not work with INVARIANTS (fwd) Message-ID: <20030825134756.P18344@root.org>
next in thread | raw e-mail | index | archive | help
Ken is aware of the following problem. It is in both cd(4) and da(4) as well as stable and current. One possible approach would be to run {da,cd}register() from a task queue and not at interrupt time. -Nate ---------- Forwarded message ---------- Date: Mon, 25 Aug 2003 15:45:22 -0500 From: Aniruddha Bohra <bohra@cs.rutgers.edu> To: njl@freebsd.org Subject: scsi-da does not work with INVARIANTS [ Also posted to -stable ] Hello I tried compiling the 4-STABLE branch with INVARIANTS and INVARIANT_SUPPORT. I got a panic on boot - The problem is that daregister calls malloc with M_WAITOK in interrupt context and INVARIANTS panics the kernel. $FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.42.2.40 2003/08/24 03:26:38 ken Exp $ The problem is in the following lines : softc->sysctl_tree = SYSCTL_ADD_NODE(&softc->sysctl_ctx, SYSCTL_STATIC_CHILDREN(_kern_cam_da), OID_AUTO, tmpstr2, CTLFLAG_RD, 0, tmpstr); SYSCTL_ADD_NODE is a macro defined in sys/sysctl.h as : #define SYSCTL_ADD_NODE(ctx, parent,nbr,name,access,handler, descr)\ sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_NODE|access,\ 0, 0, handler, "N", descr); And sysctl_add_oid is defined in kern/kern_sysctl.c and has the following : oidp = malloc(sizeof(struct sysctl_oid), M_SYSCTLOID, M_WAITOK); which has a WAITOK malloc. Unfortunately, I cannot get a trace till tomorrow. Right now the machine runs fine without INVARIANTS and INVARIANT_SUPPORT. Thanks Aniruddha
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030825134756.P18344>