Re: Patch for reset in ini9100u [Initio 9100U(W)]

From: James Bottomley
Date: Wed Jan 07 2004 - 19:57:39 EST


On Tue, 2004-01-06 at 17:14, Jonathan McDowell wrote:
> I have an IWill 2935UW SCSI controller which uses the ini9100u driver.
> This has been working fine under 2.4 but I've recently built up a box of
> spare bits including the controller and installed 2.6 on it. The driver
> is marked broken in 2.6, apparently because of a lack of reset/abort
> functionality as it compiles and runs ok. So I've taken a stab at
> getting reset support back. Patch is below and it's received minimal
> testing - it boots, removes the callback trace and error message and
> doesn't seem to cause problems (the only disk in the machine is on this
> card).

I think it's a good beginning. However, there are some things that
could be done to improve it.

> +int i91u_bus_reset(Scsi_Cmnd * SCpnt)
> +{
> + HCS *pHCB;
> +
> + pHCB = (HCS *) SCpnt->device->host->base;
> + tul_reset_scsi_bus(pHCB);

This won't quite do beacuse tul_reset_scsi_bus() has some really nasty
properties

Under the old error handler, the reset routine was responsible for
resetting the bus, waiting the timeout (which tul_reset_scsi_bus() does
with a busy wait) and flushing the queue.

In the new scheme, the eh thread takes care of all of this (including a
nice thread based wait).

I think this may all work correctly if you change this call to:

tul_reset_scsi(pHCB, 0);

instead. That should simply reset the bus and not busy wait at all,
which is really what the error handler is expecting.

James


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/