DragonFly BSD
DragonFly submit List (threaded) for 2004-09
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: proposed addition for sys/raid/ips (ServeRaid) driver in order to support latest 6M cards from Adaptec


From: YONETANI Tomokazu <qhwt+dragonfly-submit@xxxxxxxxxx>
Date: Mon, 6 Sep 2004 18:52:36 +0900

On Mon, Sep 06, 2004 at 10:09:03AM +0200, Toma?Ťö Bor?ŤŢtnar wrote:
> YONETANI Tomokazu wrote:
> 
> >Yeah, our ServeRAID driver lacks recent important updates from 
> >FreeBSD-CURRENT
> >including newly supported controllers and a few bug fixes.
> not sure if freebsd 5.3 driver is that good. I have open PR 
> (http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/71087) for it.

Hmm, looks to me like later reports are problems related to USB
drivers(the one you reported to bugs@).

>  The update
> >in FreeBSD-CURRENT also involves converting some of mutex operations into
> >sema_* and bio*, but I haven't managed to rewrite it using our native
> >thread APIs. Anyway, I can post a minimal patch(that is, not including my
> >experimental code to convert the mutexes and the semaphoe stuffs) to 
> >support
> >newer controllers if you like to try it.
> 
> I did this for FreeBSD 5.2.1 to make it work:
> 
> Index: sys/dev/ips/ips.h
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/ips/ips.h,v
> retrieving revision 1.5
> diff -u -r1.5 ips.h
> --- sys/dev/ips/ips.h   27 Nov 2003 08:37:36 -0000      1.5
> +++ sys/dev/ips/ips.h   30 Aug 2004 14:35:18 -0000
> @@ -52,8 +52,8 @@
>  /*
>   *   IPS CONSTANTS
>   */
> -#define IPS_VENDOR_ID                   0x1014
> -#define IPS_MORPHEUS_DEVICE_ID          0x01BD
> +#define IPS_VENDOR_ID                   0x9005
> +#define IPS_MORPHEUS_DEVICE_ID          0x0250
>  #define IPS_COPPERHEAD_DEVICE_ID        0x002E
>  #define IPS_CSL                                0xff
>  #define IPS_POCL                       0x30
> 
> 
> It is a hack, but it works fine.
> I would say something like this should not go into main Dfly code, but 
> something close would make Dfly usable for people with new cards.
> 
> Yes, I will gladly test it if you prepare a better patch than my hack.

Ok, I assume you have a recent DragonFly snapshot CD to boot your e325 and
enable network so that you can build patched ips.ko somewhere else and copy
it over the network. As far as I tested, ips driver can be loaded via
kldload after booting into multi-user mode. You can also install an IDE disk
to e325, install DragonFly on to it, and then hack the driver and replicate
the system onto the ServeRAID partitions.

There are two patches attached to this message. Please apply it to the
recent DragonFly source on a build machine, and compile the driver.

$ zcat ips-style.diff | patch -d/sys -p0
$ zcat ips-new.diff | patch -d/sys -p0
$ cd /sys/dev/raid/ips
$ make obj && make depend && make
$ cp $(make -V .OBJDIR)/ips.ko ~

Now you have the driver in your home directory. Then send it to e325
and kldload it:
# kldload ./ips.ko
(the screen freezes for a moment)

You have to populate the device nodes, as they are not there on LiveCD
by default.

# cd /dev
# ./MAKEDEV ipsd0

The rest of the operation is the same as written in /README, except that
you have to replace every occurence of ad0 with ipsd0. Also please make
sure that your /mnt/etc/fstab has correct device name, and that you
populated your /mnt/dev/ipsd0* . If you forgot polupating the device nodes
on installed system, the boot procedure stops unexpectedly and waste your
time figuring out what went wrong.

Thanks in advance for testing the patch on your newer controller.

Changes include:
- style fix(ips-style.diff.gz)
- add support for newer controller
- use unique malloc type rather than M_DEVBUF
- bus_alloc_resource() -> bus_alloc_resource_any()

Changes not included:
- use of sema_* and bio* functions
- dev_t -> struct cdev *
- dump support(this is not even in FreeBSD-CURRENT, but being worked-on)

Attachment: ips-style.diff.gz
Description: application/gunzip

Attachment: ips-new.diff.gz
Description: application/gunzip



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]