diff options
author | simokawa <simokawa@FreeBSD.org> | 2008-05-10 09:22:06 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2008-05-10 09:22:06 +0000 |
commit | 63b359487358cebf3e864d841113aab61a578d60 (patch) | |
tree | 737f1847b346f89c4901e169fc23a6459e1ad91f | |
parent | cddedacd770e1d571e03f0cf4afc7ccfa43ae8b2 (diff) | |
download | FreeBSD-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
-rw-r--r-- | sys/dev/firewire/fwohci.c | 13 |
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, |