summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/sbp.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2004-01-05 14:21:18 +0000
committersimokawa <simokawa@FreeBSD.org>2004-01-05 14:21:18 +0000
commit007605b9187cb852ffd9e2b660a880791ad06c92 (patch)
tree8e94b8afeea0a4c99a0df0234a9c6aecde42494f /sys/dev/firewire/sbp.c
parent8f8e1b2ede43eac06fdfa820bf577e5e2a052a48 (diff)
downloadFreeBSD-src-007605b9187cb852ffd9e2b660a880791ad06c92.zip
FreeBSD-src-007605b9187cb852ffd9e2b660a880791ad06c92.tar.gz
MFp4:
* firewire - Remove pending list. - Ignore timeout for the FWXF_START state. - Define M_FWMEM for debugging. - Comment out DELAY() in fw_asybusy(). - Improve debugging messages * sbp - Freeze simq while bus reset.
Diffstat (limited to 'sys/dev/firewire/sbp.c')
-rw-r--r--sys/dev/firewire/sbp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/firewire/sbp.c b/sys/dev/firewire/sbp.c
index 39c7536..3b02699 100644
--- a/sys/dev/firewire/sbp.c
+++ b/sys/dev/firewire/sbp.c
@@ -216,6 +216,8 @@ struct sbp_softc {
struct fw_bind fwb;
bus_dma_tag_t dmat;
struct timeval last_busreset;
+#define SIMQ_FREEZED 1
+ int flags;
};
static void sbp_post_explore __P((void *));
@@ -764,6 +766,10 @@ sbp_post_busreset(void *arg)
SBP_DEBUG(0)
printf("sbp_post_busreset\n");
END_DEBUG
+ if ((sbp->sim->flags & SIMQ_FREEZED) == 0) {
+ xpt_freeze_simq(sbp->sim, /*count*/1);
+ sbp->sim->flags |= SIMQ_FREEZED;
+ }
microtime(&sbp->last_busreset);
}
@@ -833,6 +839,8 @@ END_DEBUG
if (target->num_lun == 0)
sbp_free_target(target);
}
+ xpt_release_simq(sbp->sim, /*run queue*/TRUE);
+ sbp->sim->flags &= ~SIMQ_FREEZED;
}
#if NEED_RESPONSE
OpenPOWER on IntegriCloud