# Highpoint 1820A RAID support

## steelrat

Hi gentooers,

On the Highpoint vendor website it mentions all kinds of support for their the 1820A SATA hardware RAID controler card under RH, SUSE, and fbsd.

Even goes so far as to mention:

 *Quote:*   

> ※ FreeBSD 5.3 has native support for the RocketRAID 1820A / 1820

 

I was a bit surprised that no obvious module exist in the kernel base and the management utilities are not in portage.

Has anyone had success using one of these in their gentoo distro?

I see previous forum posts mentioning it here and here, though I have no need to boot off of my array.

I'm a bit surprised that this kind of thing hasn't worked its way into portage.  It would be handy to be able to emerge the management utilities and remove some of the guesswork out of the kernel.

Any thoughts would be apprecated.  TIA.

----------

## 1U

I thought the highpoint 1820A was a software raid controller? It certainly looks and is priced like one. If it is software, that would explain the lacking support because you would have to follow the software raid guides and set it up like every other software raid device. Though I'm not sure, hope that helps and I'm also interested in finding out about this.

----------

## steelrat

 *1U wrote:*   

> I thought the highpoint 1820A was a software raid controller? It certainly looks and is priced like one. If it is software, that would explain the lacking support because you would have to follow the software raid guides and set it up like every other software raid device. Though I'm not sure, hope that helps and I'm also interested in finding out about this.

 

Ah.  I may have misspoke.

newegg description didn't mention if it was or not.  Since every OS under the sun was supported, I figured it would act like one of the usual hardware RAID adapters.  That assumption could easily be wrong.

----------

## bonbons

You may use the "Linux Opensource Drivers" ([url=http://www.highpoint-tech.com/BIOS + Driver/rr1820a/Linux/rr182x-opensource-v1.12c.tgz]http://www.highpoint-tech.com/BIOS + Driver/rr1820a/Linux/rr182x-opensource-v1.12c.tgz[/url]), it's mentionned at 3 box from bottom of "BIOS/Driver" page.

I'm using the older RR1640 card and driver works correctly, but for 2.6.10 and now again for 2.6.12 there were changes to SCSI part of the kernel making the driver either not compile at all or not load, so you might sometimes need to wait for them to release an update (or patch yourself if you are a kernel hacker).

The raid "code" itself is in binary in the archive, so no way to look at the code to know how much is software or hardware...

----------

## steelrat

 *bonbons wrote:*   

> You may use the "Linux Opensource Drivers" ([url=http://www.highpoint-tech.com/BIOS + Driver/rr1820a/Linux/rr182x-opensource-v1.12c.tgz]http://www.highpoint-tech.com/BIOS + Driver/rr1820a/Linux/rr182x-opensource-v1.12c.tgz[/url]), it's mentionned at 3 box from bottom of "BIOS/Driver" page.

 

Yeah.  I linked to the driver page.  Thanks though.

 *Quote:*   

> I'm using the older RR1640 card and driver works correctly, but for 2.6.10 and now again for 2.6.12 there were changes to SCSI part of the kernel making the driver either not compile at all or not load, so you might sometimes need to wait for them to release an update (or patch yourself if you are a kernel hacker).

 

What versions of the kernel are working for you?  Can you narrow it down a little for me?  I'd appreciate it.

 *Quote:*   

> The raid "code" itself is in binary in the archive, so no way to look at the code to know how much is software or hardware...

 

This highpoint card beat everyones ass firmly in benchmarking and had multiple OS suppoer, so my assumption was that it was hardware.  Not that it matters too much at this point.

I am not a kernel hacker, so I'll email around a bit and update the thread with what I hear from the vendor.

----------

## bonbons

 *steelrat wrote:*   

>  *Quote:*   I'm using the older RR1640 card and driver works correctly, but for 2.6.10 and now again for 2.6.12 there were changes to SCSI part of the kernel making the driver either not compile at all or not load, so you might sometimes need to wait for them to release an update (or patch yourself if you are a kernel hacker). 
> 
> What versions of the kernel are working for you?  Can you narrow it down a little for me?  I'd appreciate it.

 

The drivers for RR1640 (hpt374-opensource-v2.13.tgz), latest version (2.13) are working with kernels up to 2.6.11.* (vanilla or gentoo-sources). Have not yet mailed them about 2.6.12, but will do soon.

 *steelrat wrote:*   

> I am not a kernel hacker, so I'll email around a bit and update the thread with what I hear from the vendor.

 I'm not a kernel hacker either, and did contact them a few times already. Service is correct even though not the quickest.

----------

## zigzag2

hi!

I also have the RR1640 - i tried gentoo-kernel 2.6.11 and it panic'ed when i loaded the freshly compiled v2.13 driver,  2.6.9 is the only that wants to work with me  :Sad: 

Did you mail them yet btw?

Best regards.

----------

## bonbons

 *zigzag2 wrote:*   

> I also have the RR1640 - i tried gentoo-kernel 2.6.11 and it panic'ed when i loaded the freshly compiled v2.13 driver,  2.6.9 is the only that wants to work with me 

 For 2.6.11 it works just fine for me, currently 2.6.11-gentoo-r11 (gentoo-sources), x86 on gcc3.3

I have not yet mailed them yet about 2.6.12...

Make sure you have not compiled the hpt374 driver in the kernel (there is such a driver for PATA which takes ownership of the RR1640 card, but ignoring any RAID functionnality) Second not, are you using 4k stack? If yes, try using normal stacks.

----------

## bonbons

For gentoo-source-2.6.12* and vserver-sources-2.0 the driver version 2.13 works fine (using a small patch).

Only thing to do is remove the problematic symbol.

Here are patch and ebuild (ebuild not tested with 2.6.11* kernels... but version check should be fine!):

As there are some warnings about deprecated code during compilation I guess that at one of the next kernel releases a new patch will be required...

```
--- entry.c.orig   2005-03-30 03:05:44.000000000 +0200

+++ entry.c   2005-09-18 15:24:29.000000000 +0200

@@ -939,7 +939,7 @@

       if (SCpnt->use_sg) {

          if (!HPT_SCP(SCpnt)->mapped) {

             HPT_SCP(SCpnt)->sgcnt = pci_map_sg((HOSTDATA(sc_host(SCpnt)))->pci_dev, 

-                     sgList, SCpnt->use_sg, scsi_to_pci_dma_dir(SCpnt->sc_data_direction));

+                     sgList, SCpnt->use_sg, SCpnt->sc_data_direction);

             HPT_ASSERT(HPT_SCP(SCpnt)->sgcnt <= MAX_SG_DESCRIPTORS);

             HPT_SCP(SCpnt)->mapped = 1;

          }

@@ -954,7 +954,7 @@

       else {

          if (!HPT_SCP(SCpnt)->mapped) {

             HPT_SCP(SCpnt)->dma_handle = pci_map_single((HOSTDATA(sc_host(SCpnt)))->pci_dev, SCpnt->request_buffer,

-                     SCpnt->request_bufflen, scsi_to_pci_dma_dir(SCpnt->sc_data_direction));

+                     SCpnt->request_bufflen, SCpnt->sc_data_direction);

             HPT_SCP(SCpnt)->mapped = 1;

          }

          pSg->dSgAddress = HPT_SCP(SCpnt)->dma_handle;

@@ -977,14 +977,14 @@

             HOSTDATA(sc_host(SCpnt))->pci_dev,

             (struct scatterlist *)SCpnt->request_buffer,

             SCpnt->use_sg,

-            scsi_to_pci_dma_dir(SCpnt->sc_data_direction)

+            SCpnt->sc_data_direction

          );

       else

             pci_unmap_single(

             HOSTDATA(sc_host(SCpnt))->pci_dev,

             HPT_SCP(SCpnt)->dma_handle, 

             SCpnt->request_bufflen,

-            scsi_to_pci_dma_dir(SCpnt->sc_data_direction)

+            SCpnt->sc_data_direction

          );

    }

```

I checked for the problematic "scsi_to_pci_dma_dir()" symbol in 2.6.11 and checked how code was changed in 2.6.12. In the files where I looked they just removed the symbol.

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

 

inherit linux-mod eutils

 

DESCRIPTION="Driver for the Highpoint RocketRaid SATA cards RR154x and RR164x"

 

HOMEPAGE="http://www.highpoint-tech.com/"

SRC_URI="http://www.highpoint-tech.com/BIOS%20+%20Driver/rr1640/Linux/hpt374-opensource-v$PV.tgz"

 

LICENSE="as-is"

SLOT="0"

KEYWORDS="~x86 ~amd64"

IUSE=""

RESTRICT="nomirror"

 

RDEPEND=""

 

S=${WORKDIR}/

MODULE_NAMES="hpt374(scsi:${S})"

CONFIG_CHECK="SCSI BLK_DEV_SD"

#BUILD_PARAMS="KERNELVER=${KV_FULL} KERNELDIR=${KV_DIR} KERNEL_BUILD=${KV_DIR}"

BUILD_PARAMS="-C ${KV_DIR} SUBDIRS=${S} "

BUILD_TARGETS="modules"

 

check_kernel_version() {

        # Only kernel versions 2.x.x are supported

        [ "${KV_MAJOR}" == "2" ] || return 1

        # Only kernel versions 2.4.x or 2.6.x are supported

        [ "${KV_MINOR}" == "4" -o "${KV_MINOR}" == "6" ] || return 1

        # Only versions up to 2.6.11 are supported

        [ "${KV_PATCH}" -le "12" ] || return 1

        return 0;

}

 

src_compile() {

        check_kernel_version || die "Kernel version ${KV_FULL} not supported."

        if [ "${KV_MAJOR}" == "2" -a "${KV_MINOR}" == "6" -a "${KV_PATCH}" -ge "12" ]; then

                epatch ${FILESDIR}/hpt374-2.6.12.patch || die "Failed to patch

                scsi_to_pci_dma_dir() symbol issue"

        fi

        use amd64 && cp -f raid-x86_64.o raid.obj

        use x86 && cp -f raid.o raid.obj

        [ -f raid.obj ] || die "Unsupported platform or missing raid.obj"

        linux-mod_src_compile

}

 

src_install() {

        linux-mod_src_install

 

        dodoc readme.txt

}

 

pkg_postinst() {

        linux-mod_pkg_postinst

 

        einfo "You can load the module:"

        einfo "% modprobe hpt374"

        echo

}
```

----------

