diff options
author | simokawa <simokawa@FreeBSD.org> | 2007-06-06 14:31:36 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2007-06-06 14:31:36 +0000 |
commit | 6052bc5731ca66f7ae519ab26941c42ceef6daaf (patch) | |
tree | bda94d3de727b214eea64936b54deb3b46a61f52 /sys/dev/firewire/fwdma.c | |
parent | 27c6e3f25e2c0ab488171e7704cea4e8b215f483 (diff) | |
download | FreeBSD-src-6052bc5731ca66f7ae519ab26941c42ceef6daaf.zip FreeBSD-src-6052bc5731ca66f7ae519ab26941c42ceef6daaf.tar.gz |
MFp4: MPSAFE firewire stack.
- lock its own locks and drop Giant.
- create its own taskqueue thread.
- split interrupt routine
- use interrupt filter as a fast interrupt.
- run watchdog timer in taskqueue so that it should be
serialized with the bottom half.
- add extra sanity check for transaction labels.
disable ad-hoc workaround for unknown tlabels.
- add sleep/wakeup synchronization primitives
- don't reset OHCI in fwohci_stop()
Diffstat (limited to 'sys/dev/firewire/fwdma.c')
-rw-r--r-- | sys/dev/firewire/fwdma.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/firewire/fwdma.c b/sys/dev/firewire/fwdma.c index 2c84ebc..bf3bb6f 100644 --- a/sys/dev/firewire/fwdma.c +++ b/sys/dev/firewire/fwdma.c @@ -92,7 +92,7 @@ fwdma_malloc(struct firewire_comm *fc, int alignment, bus_size_t size, /*flags*/ BUS_DMA_ALLOCNOW, #if defined(__FreeBSD__) && __FreeBSD_version >= 501102 /*lockfunc*/busdma_lock_mutex, - /*lockarg*/&Giant, + /*lockarg*/FW_GMTX(fc), #endif &dma->dma_tag); if (err) { @@ -190,7 +190,7 @@ fwdma_malloc_multiseg(struct firewire_comm *fc, int alignment, /*flags*/ BUS_DMA_ALLOCNOW, #if defined(__FreeBSD__) && __FreeBSD_version >= 501102 /*lockfunc*/busdma_lock_mutex, - /*lockarg*/&Giant, + /*lockarg*/FW_GMTX(fc), #endif &am->dma_tag)) { printf("fwdma_malloc_multiseg: tag_create failed\n"); |