Re: your mail

Gérard Roudier
2001-12-14T19:41:07Z

On Fri, 14 Dec 2001, Kirk Alexander wrote:

> [cc'ed to lkml and Gerard Roudier]
>
> Hi Jens,
>
> You asked people to send in reports of which drivers
> were broken by the removal of io_request_lock.
>
> My system is a clunky old Digital Pentium Pro with a
> NCR53c810 rev 2 scsi controller, so it can't use the
> sym driver.

Use sym53c8xx_2 instead. This one uses 2 different firmwares,

- one based on sym53c8xx driver scripts called
'LOAD/STORE based' firmware,
- and another one that only uses generic scripts instructions
and called 'GENERIC' firmware.

The GENERIC firmware has worked for me witn a 810 rev. 2.

I haven't this controller installed at the moment, but I can test the
driver by forcing the driver to use the GENERIC scripts instead for any
symbios chip.

You may let me know if sym53c8xx_2 still works with 810 rev 2.

> I fixed the problem by seeing what the sym
> driver did i.e. the patch below
> This may not be right at all, and I haven't had a
> chance to boot the kernel - but it did build OK.

The ncr53c8xx and sym53c8xx version 1 use the obsolete scsi eh handling.
Moving the eh code from sym53c8xx_2 (version 2) to ncr53c8xx/sym53c8xx is
quite feasible, but may-be it is just useless given sym53c8xx_2. For now,
it seems that sym53c8xx_2 replaces both ncr/sym53c8xx without any loss of
reliability and performance.

Gérard.

> Cheers,
> Kirk Alexander
>
> P.S.
> Please excuse me if this has already been fixed or
> posted, or if I've broken some lkml etiquette - first
> post I think after lurking off and on for ages. Also
> first time I've compiled a kernel that has only been
> out a few days!

You are welcome and you didn't break any etiquette. The lkml is a very
open mailing list but it gets more than 200 postings a day. Thus the
linux-scsi@vger.kernel.org list should be preferred for topics that
address scsi specifically.

> --- linux/drivers/scsi/sym53c8xx_comm.h Fri Dec 14
> 16:46:45 2001
> +++ linux/drivers/scsi/sym53c8xx_comm.h Fri Dec 14
> 16:49:19 2001
> @@ -438,11 +438,20 @@
> #define NCR_LOCK_NCB(np, flags)
> spin_lock_irqsave(&np->smp_lock, flags)
> #define NCR_UNLOCK_NCB(np, flags)
> spin_unlock_irqrestore(&np->smp_lock, flags)
>
> +#if LINUX_VERSION_CODE >= LinuxVersionCode(2,5,0)
> +
> +#define NCR_LOCK_SCSI_DONE(np, flags) \
> + spin_lock_irqsave((np)->done_list->host, flags)
> +#define NCR_UNLOCK_SCSI_DONE(np, flags) \
> + spin_unlock_irqrestore((np)->done_list->host,
> flags)
> +#else
> +
> #define NCR_LOCK_SCSI_DONE(np, flags) \
> spin_lock_irqsave(&io_request_lock, flags)
> #define NCR_UNLOCK_SCSI_DONE(np, flags) \
> spin_unlock_irqrestore(&io_request_lock, flags)
>
> +#endif
> #else
>
> #define NCR_LOCK_DRIVER(flags) do {
> save_flags(flags); cli(); } while (0)