PERFORCE change 100065 for review
Scott Long
scottl at FreeBSD.org
Mon Jun 26 15:34:20 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=100065
Change 100065 by scottl at scottl-wv1u on 2006/06/26 15:33:26
Start going to MPSAFE callouts.
Affected files ...
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.c#6 edit
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.c#9 edit
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.c#5 edit
.. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.h#6 edit
Differences ...
==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.c#6 (text+ko) ====
@@ -8092,8 +8092,8 @@
ahd_outb(ahd, SCSISEQ1, scsiseq1 & (ENSELI|ENRSELI|ENAUTOATNP));
ahd_unpause(ahd);
ahd->flags &= ~AHD_RESET_POLL_ACTIVE;
+ aic_release_simq(ahd);
ahd_unlock(ahd, &s);
- aic_release_simq(ahd);
ahd_list_unlock(&l);
}
@@ -9276,12 +9276,15 @@
ahd_timeout(struct scb *scb)
{
struct ahd_softc *ahd;
+ u_long s;
ahd = scb->ahd_softc;
if ((scb->flags & SCB_ACTIVE) != 0) {
if ((scb->flags & SCB_TIMEDOUT) == 0) {
+ ahd_lock(ahd, &s);
LIST_INSERT_HEAD(&ahd->timedout_scbs, scb,
timedout_links);
+ ahd_unlock(ahd, &s);
scb->flags |= SCB_TIMEDOUT;
}
ahd_wakeup_recovery_thread(ahd);
==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.c#9 (text+ko) ====
@@ -222,7 +222,7 @@
if ((scb->flags & SCB_TIMEDOUT) != 0)
LIST_REMOVE(scb, timedout_links);
- untimeout(ahd_platform_timeout, (caddr_t)scb, ccb->ccb_h.timeout_ch);
+ callout_stop(&ccb->ccb_h.callout);
if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE) {
bus_dmasync_op_t op;
==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.c#5 (text+ko) ====
@@ -57,8 +57,7 @@
union ccb *ccb;
ccb = list_scb->io_ctx;
- untimeout(aic_platform_timeout, list_scb,
- ccb->ccb_h.timeout_ch);
+ callout_stop(&ccb->ccb_h.callout);
}
}
}
@@ -116,9 +115,6 @@
struct aic_softc *aic;
u_long s;
-#if __FreeBSD_version >= 500000
- mtx_lock(&Giant);
-#endif
aic = (struct aic_softc *)arg;
aic_lock(aic, &s);
for (;;) {
@@ -137,9 +133,6 @@
aic->platform_data->recovery_thread = NULL;
wakeup(aic->platform_data);
aic_unlock(aic, &s);
-#if __FreeBSD_version >= 500000
- mtx_unlock(&Giant);
-#endif
kthread_exit(0);
}
==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.h#6 (text+ko) ====
@@ -187,7 +187,7 @@
/***************************** Timer Facilities *******************************/
#if __FreeBSD_version >= 500000
-#define aic_timer_init(timer) callout_init(timer, /*mpsafe*/0)
+#define aic_timer_init(timer) callout_init(timer, /*mpsafe*/1)
#else
#define aic_timer_init callout_init
#endif
@@ -223,10 +223,8 @@
time = msec;
time *= hz;
time /= 1000;
- untimeout(aic_platform_timeout, (caddr_t)scb,
- scb->io_ctx->ccb_h.timeout_ch);
- scb->io_ctx->ccb_h.timeout_ch =
- timeout(aic_platform_timeout, scb, time);
+ callout_reset(&scb->io_ctx->ccb_h.callout, time, aic_platform_timeout,
+ scb);
}
static __inline void
@@ -235,13 +233,7 @@
if (AIC_SCB_DATA(scb->aic_softc)->recovery_scbs == 0
&& scb->io_ctx->ccb_h.timeout != CAM_TIME_INFINITY) {
- uint64_t time;
-
- time = scb->io_ctx->ccb_h.timeout;
- time *= hz;
- time /= 1000;
- scb->io_ctx->ccb_h.timeout_ch =
- timeout(aic_platform_timeout, scb, time);
+ aic_scb_timer_reset(scb, scb->io_ctx->ccb_h.timeout);
}
}
More information about the p4-projects
mailing list