Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Apr 2002 20:17:24 +0200
From:      Bjoern Fischer <bfischer@Techfak.Uni-Bielefeld.DE>
To:        =?iso-8859-1?Q?S=F8ren?= Schmidt <sos@freebsd.dk>
Cc:        freebsd-stable@FreeBSD.ORG
Subject:   Re: Problems w/ MFCed ata driver
Message-ID:  <20020405181724.GB919@frolic.no-support.loc>
In-Reply-To: <200204051600.g35G0ZV50417@freebsd.dk>
References:  <20020405152447.GA919@frolic.no-support.loc> <200204051600.g35G0ZV50417@freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello S=F8ren,

wow, about 30 minutes and the bug is fixed. That was fast. ;-)

> > 1.) FreeBSD constantly crashes, when I try to detach a channel twice:
[...]
> > ata_detach() seems to call bus_release_resource() with
> > (dev=3D0xc15a8300, type=3D1, rid=3D0, r=3D0x0; the latter one does not =
seem right)
> > although the channel is already detached and the kernel crashes later in
> > nexus_release_resource().
>=20
> Hmm, "dont do that" :)
> Its an artifact of newbus/missing devfs that it doesn't get caught,=20
> I'll think about how to do this..

Maybe by looking at ch->r_io, ch->r_altio and ch->r_irq as you do in
ata_reinit().

[...]
> > The process hangs in tsleep() resp. mi_switch() forever. Any further
> > actions on that ata channel may lead to a crash. Everything else keeps
> > running.
>=20
> Oops, thats a genuine bug alright.. fixed and committed.

While you're at it, please do the same for the ATAREINIT ioctl, you
sleeplock the channel within the ioctl dispatcher and ata_reinit() may
return without unlocking right at the start. BTW, why do the locking
in the dispatcher (ataioctl()) and the unlocking in ata_reinit()?

-Bj=F6rn


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020405181724.GB919>