On Fri, Jun 23, 2006 at 11:55:53PM -0700, Andrew Morton wrote:
> On Fri, 23 Jun 2006 17:04:24 -0400
> Vivek Goyal <[email protected]> wrote:
>
> >
> > o cciss driver initialization fails and hits BUG() if underlying device
> > was active during the driver initialization. Device might be active
> > if previous kernel crashed and this kernel is booting after that using
> > kdump.
> >
> >
> > ...
> >
> > o If crash_boot parameter is set, then ignore the completed command messages
> > sent by device which have not been issued in the context of this kernel.
> >
> > Signed-off-by: Vivek Goyal <[email protected]>
> > ---
> >
> > linux-2.6.17-1M-vivek/drivers/block/cciss.c | 7 +++++++
> > 1 files changed, 7 insertions(+)
> >
> > diff -puN drivers/block/cciss.c~cciss-initialization-issue-over-kdump-fix drivers/block/cciss.c
> > --- linux-2.6.17-1M/drivers/block/cciss.c~cciss-initialization-issue-over-kdump-fix 2006-06-23 14:04:55.000000000 -0400
> > +++ linux-2.6.17-1M-vivek/drivers/block/cciss.c 2006-06-23 14:08:12.000000000 -0400
> > @@ -1976,6 +1976,13 @@ static int add_sendcmd_reject(__u8 cmd,
> > ctlr, complete);
> > /* not much we can do. */
> > #ifdef CONFIG_CISS_SCSI_TAPE
> > + /* We might get notification of completion of commands
> > + * which we never issued in this kernel if this boot is
> > + * taking place after previous kernel's crash. Simply
> > + * ignore the commands in this case.
> > + */
> > + if (crash_boot)
> > + return 0;
> > return 1;
>
> Looks like this is working around a driver problem rather than fixing it
> properly ;)
That's true. Its more of a working around the problem. I think in all
such cases we should soft reset the device so that device drops the messages
issued from the context of previous kernel and starts afresh.
But looks like not all the devices provide software reset facility
(Or I can't find it out from the source code or limited documentation
available). Mike, can I soft reset this device?
I am facing similar problem in megaraid driver as well where detailed
technical documentation is not available and I can't find a way to
soft reset the device.
Or is there a generic way to handle these situations? Fixing them driver
by driver is a long painful process.
Thanks
Vivek
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]