kern/101045: PATCH: Updates to arcmsr(4)

Nikolas Britton nikolas.britton at
Sun Jul 30 10:50:16 UTC 2006

>Number:         101045
>Category:       kern
>Synopsis:       PATCH: Updates to arcmsr(4)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 30 10:50:15 GMT 2006
>Originator:     Nikolas Britton
>Release:        FreeBSD 6.1-STABLE
FreeBSD infomatic.local 6.1-STABLE FreeBSD 6.1-STABLE #0: Fri Jun 16 23:16:52 CDT 2006     nbritton at infomatic.local:/usr/src/sys/i386/compile/INFOMATIC  i386

These are patches to update the Areca driver in FreeBSD with most current driver provided by Areca, v1.20.00.12. 

* New support for ARC-1170 and ARC-1270 24port RAID controllers.
* Bug fixes and code cleanup.
* Bug fix with abort command handling.
* Firmware version check.
* Firmware update notify for hardware bug fix handling if none zero high part physical address of srb resource.
*** Here is the new arcmsr.c ready for import into FreeBSD: ***

Here is the new arcmsr.c that the new FreeBSD driver is based on:

Here is the old arcmsr.c from FreeBSD -CURRENT:

Here is the old arcmsr.c that the old FreeBSD driver was based on:

*** Here is the new arcmsr.h patch: ***

*** Here is the new man page: ***

Other files can be found here:
Below are merges I did manualy from the old FreeBSD driver to the new Areca driver... CHECK MY WORK, I don't know what I'm doing! I was not able to merge all of the changes made on the old FreeBSD code because the new code was different, here is the stuff I changed that needs to be checked:

diff arcmsr.c.1200012
> ** $FreeBSD$
< #include <machine/clock.h>
<       if(pccb->ccb_h.status != CAM_REQ_INPROG)
>       if((pccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG)
<                                               struct bus_dma_segment seg;
<                                               seg.ds_addr=(bus_addr_t)pccb->csio.data_ptr;
<                                               seg.ds_len=pccb->csio.dxfer_len;
<                                               arcmsr_executesrb(pSRB,&seg,1,0);
>                                               panic("arcmsr: CAM_DATA_PHYS not supported");
<                                               /*lowaddr*/BUS_SPACE_MAXADDR_32BIT,
>                                               /*lowaddr*/BUS_SPACE_MAXADDR,
<                                               /*lowaddr*/BUS_SPACE_MAXADDR_32BIT,
>                                               /*lowaddr*/BUS_SPACE_MAXADDR,
<                                               /*flags*/BUS_DMA_ALLOCNOW,
>                                               /*flags*/0,
<                                               /*flags*/BUS_DMA_ALLOCNOW,
>                                               /*flags*/0,

More information about the freebsd-bugs mailing list