summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/fwohci.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2008-05-10 09:22:06 +0000
committersimokawa <simokawa@FreeBSD.org>2008-05-10 09:22:06 +0000
commit63b359487358cebf3e864d841113aab61a578d60 (patch)
tree737f1847b346f89c4901e169fc23a6459e1ad91f /sys/dev/firewire/fwohci.c
parentcddedacd770e1d571e03f0cf4afc7ccfa43ae8b2 (diff)
downloadFreeBSD-src-63b359487358cebf3e864d841113aab61a578d60.zip
FreeBSD-src-63b359487358cebf3e864d841113aab61a578d60.tar.gz
- Disable interrupts on suspend to eliminate excessive
'device physically ejected?' message on resume. - Fix memory leak on resume reported by kiyohara at netbsd.org. MFC after: 2 weeks
Diffstat (limited to 'sys/dev/firewire/fwohci.c')
-rw-r--r--sys/dev/firewire/fwohci.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/dev/firewire/fwohci.c b/sys/dev/firewire/fwohci.c
index c74d8d8..8893387 100644
--- a/sys/dev/firewire/fwohci.c
+++ b/sys/dev/firewire/fwohci.c
@@ -1745,6 +1745,8 @@ fwohci_stop(struct fwohci_softc *sc, device_t dev)
{
u_int i;
+ fwohci_set_intr(&sc->fc, 0);
+
/* Now stopping all DMA channel */
OWRITE(sc, OHCI_ARQCTLCLR, OHCI_CNTL_DMA_RUN);
OWRITE(sc, OHCI_ARSCTLCLR, OHCI_CNTL_DMA_RUN);
@@ -2601,10 +2603,13 @@ fwohci_add_rx_buf(struct fwohci_dbch *dbch, struct fwohcidb_tr *db_tr,
ir = &dbch->xferq;
if (ir->buf == NULL && (dbch->xferq.flag & FWXFERQ_EXTBUF) == 0) {
- db_tr->buf = fwdma_malloc_size(dbch->dmat, &db_tr->dma_map,
- ir->psize, &dbuf[0], BUS_DMA_NOWAIT);
- if (db_tr->buf == NULL)
- return(ENOMEM);
+ if (db_tr->buf == NULL) {
+ db_tr->buf = fwdma_malloc_size(dbch->dmat,
+ &db_tr->dma_map, ir->psize, &dbuf[0],
+ BUS_DMA_NOWAIT);
+ if (db_tr->buf == NULL)
+ return(ENOMEM);
+ }
db_tr->dbcnt = 1;
dsiz[0] = ir->psize;
bus_dmamap_sync(dbch->dmat, db_tr->dma_map,
OpenPOWER on IntegriCloud