[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-kernel
Subject:    Re: Future domain TMC-950 troubles
From:       mike () duncodin ! demon ! co ! uk (Mike Civil)
Date:       1998-07-31 22:07:43
[Download RAW message or body]

In article <Pine.LNX.3.96.980730170754.15100A-100000@flashy.is.co.za>,
Craig Schlenter  <craig@is.co.za> wrote:
>I'll try to upgrade to 112 this weekend (or 113 by then) and post my
>results early next week. I'll also sift through the 99-104 patch sets for
>anything that looks like it might have broken the driver.

For info backing out the following patch 'fixes' the same problem for me.

I don't know the exact kernel this change was introduced in (ignore the patch
dates), but it was some months ago.

Mike

--- v2.1.101/linux/drivers/scsi/seagate.c       Tue Apr 14 14:29:23 1998
+++ linux/drivers/scsi/seagate.c        Mon May 11 11:27:58 1998
@@ -649,8 +649,6 @@
   int temp;
   Scsi_Cmnd *SCtmp;

-/* enable all other interrupts. */
-  sti ();
 #if (DEBUG & PHASE_RESELECT)
   printk ("scsi%d : seagate_reconnect_intr() called\n", hostno);
 #endif
@@ -1015,11 +1013,14 @@
  */

 #if defined(ARBITRATE)
+      { unsigned long flags;
+      save_flags (flags);
       cli ();
       WRITE_CONTROL (0);
       WRITE_DATA ((controller_type == SEAGATE) ? 0x80 : 0x40);
       WRITE_CONTROL (CMD_START_ARB);
-      sti ();
+      restore_flags (flags);
+      }
       while (!((status_read = STATUS) & (STAT_ARB_CMPL | STAT_SEL)) &&
              (jiffies < clock) && !st0x_aborted) ;

@@ -1054,19 +1055,25 @@
  */
 #ifdef OLDCNTDATASCEME
 #ifdef SWAPCNTDATA
+      { unsigned long flags;
+        save_flags(flags);
        cli();
       WRITE_CONTROL (BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
                      (reselect ? CMD_ATTN : 0));
       WRITE_DATA ((unsigned char) ((1 << target) |
                                (controller_type == SEAGATE ? 0x80 : 0x40)));
-       sti();
+       restore_flags(flags);
+      }
 #else
+      { unsigned long flags;
+      save_flags(flags);
       cli ();
       WRITE_DATA ((unsigned char) ((1 << target) |
                                (controller_type == SEAGATE ? 0x80 : 0x40)));
       WRITE_CONTROL (BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
                      (reselect ? CMD_ATTN : 0));
-      sti ();
+      restore_flags (flags);
+      }
 #endif
 #else
        tmp_data = (unsigned char) ((1 << target) | (controller_type == SEAGATE

-- 
Mike Civil                        Home  : mike@duncodin.demon.co.uk
Broadmayne, Dorset, UK            Work  : Mike.Civil@barclays.co.uk
+44 (0)1305 853644

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic