summaryrefslogtreecommitdiffstats
path: root/sys/dev/arcmsr/arcmsr.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2009-11-09 07:28:29 +0000
committerdelphij <delphij@FreeBSD.org>2009-11-09 07:28:29 +0000
commitb7a17acd73817489ba365041d0d1d2767ee673ed (patch)
treef309d573fb06e0896818dead49de66aa07d5fbed /sys/dev/arcmsr/arcmsr.c
parent6c9aae7fc58713bd04787fba6873415627fcdcce (diff)
downloadFreeBSD-src-b7a17acd73817489ba365041d0d1d2767ee673ed.zip
FreeBSD-src-b7a17acd73817489ba365041d0d1d2767ee673ed.tar.gz
Initialize the whole message unit's DMA buffer to zero, this fixes a panic
during boot when ARC1200 is being used with certain motherboard models. This commit brings the driver to the same state of vendor's 1.20.00.16 release. Many thanks to Areca for their continued support to FreeBSD. Reported by: Jirka Mikulas <jiri mikulas com> Submitted by: Erich Chen (Areca) Obtained from: ftp://ftp.areca.com.tw/RaidCards/AP_Drivers/FreeBSD/DRIVER/SourceCode/arcmsr-freebsd-1.20.00.16-91010.zip MFC after: 3 days
Diffstat (limited to 'sys/dev/arcmsr/arcmsr.c')
-rw-r--r--sys/dev/arcmsr/arcmsr.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/arcmsr/arcmsr.c b/sys/dev/arcmsr/arcmsr.c
index 09bce1b..0e6acbf 100644
--- a/sys/dev/arcmsr/arcmsr.c
+++ b/sys/dev/arcmsr/arcmsr.c
@@ -55,6 +55,8 @@
** 1.20.00.14 02/05/2007 Erich Chen bug fix for incorrect ccb_h.status report
** and cause g_vfs_done() read write error
** 1.20.00.15 10/10/2007 Erich Chen support new RAID adapter type ARC120x
+** 1.20.00.16 10/10/2009 Erich Chen Bug fix for RAID adapter type ARC120x
+** bus_dmamem_alloc() with BUS_DMA_ZERO
******************************************************************************************
* $FreeBSD$
*/
@@ -2903,7 +2905,7 @@ static u_int32_t arcmsr_initialize(device_t dev)
}
/* Allocation for our srbs */
if(bus_dmamem_alloc(acb->srb_dmat, (void **)&acb->uncacheptr
- , BUS_DMA_WAITOK | BUS_DMA_COHERENT, &acb->srb_dmamap) != 0) {
+ , BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_ZERO, &acb->srb_dmamap) != 0) {
bus_dma_tag_destroy(acb->srb_dmat);
bus_dma_tag_destroy(acb->dm_segs_dmat);
bus_dma_tag_destroy(acb->parent_dmat);
OpenPOWER on IntegriCloud