diff -ruN dist+patches-2.4.8/drivers/scsi/sym53c8xx.c cobalt-2.4.8/drivers/scsi/sym53c8xx.c --- dist+patches-2.4.8/drivers/scsi/sym53c8xx.c Thu Jul 5 11:28:16 2001 +++ cobalt-2.4.8/drivers/scsi/sym53c8xx.c Mon Aug 13 16:42:25 2001 @@ -2252,7 +2268,6 @@ **---------------------------------------------------------------- */ struct usrcmd user; /* Command from user */ - volatile u_char release_stage; /* Synchronisation stage on release */ /*---------------------------------------------------------------- ** Fields that are used (primarily) for integrity check @@ -5871,7 +5886,12 @@ ** start the timeout daemon */ np->lasttime=0; - ncr_timeout (np); +#ifdef SCSI_NCR_PCIQ_BROKEN_INTR + np->timer.expires = ktime_get((HZ+9)/10); +#else + np->timer.expires = ktime_get(SCSI_NCR_TIMER_INTERVAL); +#endif + add_timer(&np->timer); /* ** use SIMPLE TAG messages by default @@ -7234,23 +7254,14 @@ **========================================================== */ -#ifdef MODULE static int ncr_detach(ncb_p np) { - int i; - printk("%s: detaching ...\n", ncr_name(np)); /* ** Stop the ncr_timeout process -** Set release_stage to 1 and wait that ncr_timeout() set it to 2. */ - np->release_stage = 1; - for (i = 50 ; i && np->release_stage != 2 ; i--) MDELAY (100); - if (np->release_stage != 2) - printk("%s: the timer seems to be already stopped\n", - ncr_name(np)); - else np->release_stage = 2; + del_timer_sync(&np->timer); /* ** Reset NCR chip. @@ -7280,7 +7291,6 @@ return 1; } -#endif /*========================================================== ** @@ -8607,23 +8617,11 @@ { u_long thistime = ktime_get(0); - /* - ** If release process in progress, let's go - ** Set the release stage from 1 to 2 to synchronize - ** with the release process. - */ - - if (np->release_stage) { - if (np->release_stage == 1) np->release_stage = 2; - return; - } - #ifdef SCSI_NCR_PCIQ_BROKEN_INTR - np->timer.expires = ktime_get((HZ+9)/10); + mod_timer(&np->timer, ktime_get((HZ+9)/10)); #else - np->timer.expires = ktime_get(SCSI_NCR_TIMER_INTERVAL); + mod_timer(&np->timer, ktime_get(SCSI_NCR_TIMER_INTERVAL)); #endif - add_timer(&np->timer); /* ** If we are resetting the ncr, wait for settle_time before