Call bus_dma_[un]load() at splbio.
This commit is contained in:
parent
e12cb24079
commit
54ae4d24b8
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: isp_sbus.c,v 1.8 1999/03/17 06:17:16 mjacob Exp $ */
|
||||
/* $NetBSD: isp_sbus.c,v 1.9 1999/03/23 00:38:15 pk Exp $ */
|
||||
/* release_03_16_99 */
|
||||
/*
|
||||
* SBus specific probe and attach routines for Qlogic ISP SCSI adapters.
|
||||
@ -312,6 +312,7 @@ isp_sbus_dmasetup(isp, xs, rq, iptrp, optr)
|
||||
{
|
||||
struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp;
|
||||
bus_dmamap_t dmamap;
|
||||
int s;
|
||||
int dosleep = (xs->flags & SCSI_NOSLEEP) != 0;
|
||||
|
||||
if (xs->datalen == 0) {
|
||||
@ -330,12 +331,14 @@ isp_sbus_dmasetup(isp, xs, rq, iptrp, optr)
|
||||
panic("%s: dma map already allocated\n", isp->isp_name);
|
||||
/* NOTREACHED */
|
||||
}
|
||||
s = splbio();
|
||||
if (bus_dmamap_load(sbc->sbus_dmatag, dmamap,
|
||||
xs->data, xs->datalen, NULL,
|
||||
dosleep ? BUS_DMA_WAITOK : BUS_DMA_NOWAIT) != 0) {
|
||||
XS_SETERR(xs, HBA_BOTCH);
|
||||
return (CMD_COMPLETE);
|
||||
}
|
||||
splx(s);
|
||||
bus_dmamap_sync(sbc->sbus_dmatag, dmamap,
|
||||
dmamap->dm_segs[0].ds_addr, xs->datalen,
|
||||
(xs->flags & SCSI_DATA_IN)
|
||||
@ -361,6 +364,7 @@ isp_sbus_dmateardown(isp, xs, handle)
|
||||
{
|
||||
struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp;
|
||||
bus_dmamap_t dmamap;
|
||||
int s;
|
||||
|
||||
if (handle >= RQUEST_QUEUE_LEN) {
|
||||
panic("%s: bad handle (%d) in isp_sbus_dmateardown\n",
|
||||
@ -378,5 +382,7 @@ isp_sbus_dmateardown(isp, xs, handle)
|
||||
(xs->flags & SCSI_DATA_IN)
|
||||
? BUS_DMASYNC_POSTREAD
|
||||
: BUS_DMASYNC_POSTWRITE);
|
||||
s = splbio();
|
||||
bus_dmamap_unload(sbc->sbus_dmatag, dmamap);
|
||||
splx(s);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user