NetBSD-Bugs archive

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

kern/39584: arcmsr(4) driver disk state values are incorrect (for ARC-1220)



>Number:         39584
>Category:       kern
>Synopsis:       arcmsr(4) driver disk state values are incorrect (for ARC-1220)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Sep 19 08:00:01 +0000 2008
>Originator:     Brad du Plessis
>Release:        NetBSD 4.0_STABLE
>Organization:
Cathexis Technologies
>Environment:
NetBSD massstorage 4.0_STABLE NetBSD 4.0_STABLE (GENERIC.MP) #8: Thu Sep 18 
16:46:11 SAST 2008  root@massstorage:/usr/src/sys/arch/i386/compile/GENERIC.MP 
i386

>Description:
I have an Areca ARC-1220:

arcmsr0 at pci2 dev 14 function 0: interrupting at ioapic0 pin 18 (irq 10)
arcmsr0: Areca ARC-1220 Host Adapter RAID controller
arcmsr0: 8 ports, 256MB SDRAM, firmware <V1.43 2007-4-17>

and when performing a show disks with bioctl(8) I get an 'Invalid' disk state 
when the disks are actually in the unused, pass through or hot spare state. The 
disk state values returned from the device don't match what the driver expects.
>How-To-Repeat:
As above.
>Fix:
This patch addresses the problem on the ARC-1220, not sure if these values are 
correct for other Areca devices:

Index: arcmsrvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/arcmsrvar.h,v
retrieving revision 1.8.4.3
diff -u -r1.8.4.3 arcmsrvar.h
--- arcmsrvar.h 29 Aug 2008 21:24:19 -0000      1.8.4.3
+++ arcmsrvar.h 19 Sep 2008 07:51:18 -0000
@@ -349,9 +349,9 @@
        uint8_t         device_state;
 #define ARC_FW_DISK_INITIALIZED        0x88    /* disk has been initialized */
 #define ARC_FW_DISK_RAIDMEMBER 0x89    /* disk is member of a raid set */
-#define ARC_FW_DISK_PASSTHRU   0x8b    /* pass through disk */
-#define ARC_FW_DISK_HOTSPARE   0xa9    /* hotspare disk */
-#define ARC_FW_DISK_UNUSED     0xc9    /* free/unused disk */
+#define ARC_FW_DISK_PASSTHRU   0x8a    /* pass through disk */
+#define ARC_FW_DISK_HOTSPARE   0xa8    /* hotspare disk */
+#define ARC_FW_DISK_UNUSED     0xc8    /* free/unused disk */
        uint8_t         pio_mode;
        uint8_t         current_udma_mode;
        uint8_t         udma_mode;



Home | Main Index | Thread Index | Old Index