Re: Bioctl ciss controller status

2007-07-20 Thread Joel Knight
--- Quoting Doros Eracledes on 2007/07/19 at 10:42 +0100:

 I have a proliant DL360-G5 and loaded 4.1-stable on it, all hardware is
 detected fine.
 
 I want see if I can get the raid controller status with bioctl.
 
 Controller initially came with firmware 1.20 so I upgraded it to the
 latest (1.66) version but still can't get the raid controller status
 using bioctl.
 Here is what I get:
 #bioctl sd0
 bioctl: BIOCINQ: Inappropriate ioctl for device


Known issue, no fix.

mickey@ told me he found the issue but I'm not sure what happened to the
code. FYI, this issue doesn't seem to happen on the DL380.





.joel



Re: Bioctl ciss controller status

2007-07-20 Thread Stephan A. Rickauer
On Fri, 20 Jul 2007 00:49:03 -0600
Joel Knight [EMAIL PROTECTED] wrote:

 --- Quoting Doros Eracledes on 2007/07/19 at 10:42 +0100:
 
  I have a proliant DL360-G5 and loaded 4.1-stable on it, all
  hardware is detected fine.
  
  I want see if I can get the raid controller status with bioctl.
  
  Controller initially came with firmware 1.20 so I upgraded it to the
  latest (1.66) version but still can't get the raid controller status
  using bioctl.
  Here is what I get:
  #bioctl sd0
  bioctl: BIOCINQ: Inappropriate ioctl for device
 
 
 Known issue, no fix.
 
 mickey@ told me he found the issue but I'm not sure what happened to
 the code. FYI, this issue doesn't seem to happen on the DL380.

I do have the same issue with 4.1 on a DL385, though. Only one volume
configured, controller firmware 2.08.

# bioctl ciss0
bioctl: Can't locate ciss0 device via /dev/bio

-- 

 Stephan A. Rickauer

 ---
 Institute of Neuroinformatics Tel  +41 44 635 30 50
 University / ETH Zurich   Sec  +41 44 635 30 52
 Winterthurerstrasse 190   Fax  +41 44 635 30 53
 CH-8057 ZurichWeb  www.ini.unizh.ch

 RSA public key:  https://www.ini.uzh.ch/~stephan/pubkey.asc
 ---



Re: Bioctl ciss controller status

2007-07-20 Thread Markus Hennecke

On Fri, 20 Jul 2007, Stephan A. Rickauer wrote:


On Fri, 20 Jul 2007 00:49:03 -0600
Joel Knight [EMAIL PROTECTED] wrote:


--- Quoting Doros Eracledes on 2007/07/19 at 10:42 +0100:


I have a proliant DL360-G5 and loaded 4.1-stable on it, all
hardware is detected fine.

I want see if I can get the raid controller status with bioctl.

Controller initially came with firmware 1.20 so I upgraded it to the
latest (1.66) version but still can't get the raid controller status
using bioctl.
Here is what I get:
#bioctl sd0
bioctl: BIOCINQ: Inappropriate ioctl for device



Known issue, no fix.

mickey@ told me he found the issue but I'm not sure what happened to
the code. FYI, this issue doesn't seem to happen on the DL380.


I do have the same issue with 4.1 on a DL385, though. Only one volume
configured, controller firmware 2.08.

# bioctl ciss0
bioctl: Can't locate ciss0 device via /dev/bio


The cause is that the ciss_inquiry struct returned by the firmware has the 
member buswidth set to 0 (zero). So the physical drives do not get probed 
by the driver. If you set this to some other value (the original value in 
the last firmware versions was 16) the Identify Drive commands will 
fail. If you change the addressing mode from the Big Bit method to the 
old scheme the drives can be queried. I hacked up a small patch that made 
it work for the servers used in our project (DL 380 G5). I attach it 
here, but beware that it has some problems:


1. Drives that are identified by the scsi id 0:0.0 do not display the 
right status. We do not have a drive there, so I did not look into that 
for longer (no time for beauty work).


2. I had to check the drive present bit and would add only those drives 
that were present on driver initialisation. Else the bioctl would show all 
drives as Invalid (with exception to the one that would get the id 
0:0.0).


Overall it is only a quick and dirty hack to make it work. I try to look 
into that because I will have the servers here available a little bit 
longer, but I can't promise that. The other parts of the overall project 
are eating up all my time...


So this is the hack, I checked the functionality by removing one of the 
drives and reinserting it. All seems to work ok with the exceptions 
mentioned above. You can even mark a drive via bioctl. The patch is 
against 4.1-stable, dmesg and bioctl output follows below. There is a 
similar system with 5 HDs in a RAID 5 that works too. Use this at your 
own risk:


Index: ciss.c
===
RCS file: /cvs/src/sys/dev/ic/ciss.c,v
retrieving revision 1.24
diff -u -p -r1.24 ciss.c
--- ciss.c  18 Jan 2007 14:46:24 -  1.24
+++ ciss.c  20 Jul 2007 10:21:41 -
@@ -330,6 +330,14 @@ ciss_attach(struct ciss_softc *sc)
sc-maxunits = inq-numld;
sc-nbus = inq-nscsi_bus;
sc-ndrives = inq-buswidth;
+
+   if (sc-ndrives == 0) {
+   /* Handle the new firmware */
+
+   sc-sc_flags |= CISS_NOBIGBIT;
+   sc-ndrives = 16;
+   }
+
printf(: %d LD%s, HW rev %d, FW %4.4s/%4.4s\n,
inq-numld, inq-numld == 1?  : s,
inq-hw_rev, inq-fw_running, inq-fw_stored);
@@ -1152,11 +1160,19 @@ ciss_ioctl(struct device *dev, u_long cm
if (!ldp)
continue;
for (pd = 0; pd  ldp-ndrives; pd++)
-   if (ldp-tgts[pd] == (CISS_BIGBIT +
-   bb-bb_channel * sc-ndrives +
-   bb-bb_target))
-   error = ciss_blink(sc, ld, pd,
-   bb-bb_status, blink);
+   if (sc-sc_flags  CISS_NOBIGBIT) {
+   if (ldp-tgts[pd] == (
+   bb-bb_channel * sc-ndrives +
+   bb-bb_target))
+   error = ciss_blink(sc, ld, pd,
+   bb-bb_status, blink);
+   } else {
+   if (ldp-tgts[pd] == (CISS_BIGBIT +
+   bb-bb_channel * sc-ndrives +
+   bb-bb_target))
+   error = ciss_blink(sc, ld, pd,
+   bb-bb_status, blink);
+   }
}
break;

@@ -1318,9 +1334,14 @@ ciss_pdscan(struct ciss_softc *sc, int l
pdid = sc-scratch;
for (i = 0; i  sc-nbus; i++)
for (j = 0; j  sc-ndrives; j++) {
-   drv = CISS_BIGBIT + i * sc-ndrives + j;
-   if (!ciss_pdid(sc, drv, pdid, SCSI_NOSLEEP|SCSI_POLL))
-   

Re: Bioctl ciss controller status

2007-07-20 Thread Stephan A. Rickauer
On Fri, 20 Jul 2007 12:35:53 +0200 (CEST)
Markus Hennecke [EMAIL PROTECTED] wrote:

  # bioctl ciss0
  bioctl: Can't locate ciss0 device via /dev/bio
 
 The cause is that the ciss_inquiry struct returned by the firmware
 has the member buswidth set to 0 (zero). So the physical drives do
 not get probed by the driver. If you set this to some other value
 (the original value in the last firmware versions was 16) the
 Identify Drive commands will fail. If you change the addressing
 mode from the Big Bit method to the old scheme the drives can be
 queried. I hacked up a small patch that made it work for the
 servers used in our project (DL 380 G5). I attach it here, but beware
 that it has some problems:
 
 1. Drives that are identified by the scsi id 0:0.0 do not display the 
 right status. We do not have a drive there, so I did not look into
 that for longer (no time for beauty work).
 
 2. I had to check the drive present bit and would add only those
 drives that were present on driver initialisation. Else the bioctl
 would show all drives as Invalid (with exception to the one that
 would get the id 0:0.0).
 
 Overall it is only a quick and dirty hack to make it work. I try to
 look into that because I will have the servers here available a
 little bit longer, but I can't promise that. The other parts of the
 overall project are eating up all my time...
 
 So this is the hack, I checked the functionality by removing one of
 the drives and reinserting it. All seems to work ok with the
 exceptions mentioned above. You can even mark a drive via bioctl. The
 patch is against 4.1-stable, dmesg and bioctl output follows below.
 There is a similar system with 5 HDs in a RAID 5 that works too. Use
 this at your own risk:


This is good news, thanks a lot. I will test it next week.

However, if there is a developer interested in getting this quick
fix more beautiful, I could enable remote login on one of our
machines for testing and developing. Please contact me off list.

Thanks,

-- 

 Stephan A. Rickauer

 ---
 Institute of Neuroinformatics Tel  +41 44 635 30 50
 University / ETH Zurich   Sec  +41 44 635 30 52
 Winterthurerstrasse 190   Fax  +41 44 635 30 53
 CH-8057 ZurichWeb  www.ini.unizh.ch

 RSA public key:  https://www.ini.uzh.ch/~stephan/pubkey.asc
 ---



Bioctl ciss controller status

2007-07-19 Thread Doros Eracledes
I have a proliant DL360-G5 and loaded 4.1-stable on it, all hardware is
detected fine.

I want see if I can get the raid controller status with bioctl.

Controller initially came with firmware 1.20 so I upgraded it to the
latest (1.66) version but still can't get the raid controller status
using bioctl.
Here is what I get:
#bioctl sd0
bioctl: BIOCINQ: Inappropriate ioctl for device

Any help would be appreciated.


Here is the dmesg of the machine:

OpenBSD 4.1-stable (GENERIC.MP) #0: Wed May  9 03:47:33 PDT 2007
[EMAIL PROTECTED]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 2145349632 (2095068K)
avail mem = 1833291776 (1790324K)
using 22937 buffers containing 214740992 bytes (209708K) of memory
mainbus0 (root)
bios0 at mainbus0: SMBIOS rev. 2.3 @ 0xee000 (67 entries)
bios0: HP ProLiant DL360 G5
acpi at mainbus0 not configured
ipmi0 at mainbus0: version 2.0 interface KCS iobase 0xca2/2 spacing 1
mainbus0: Intel MP Specification (Version 1.4)
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Xeon(R) CPU 5120 @ 1.86GHz, 1866.99 MHz
cpu0:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,
CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,VMX,EST
,TM2,CX16,xTPR,LONG
cpu0: 4MB 64b/line 16-way L2 cache
cpu0: apic clock running at 266MHz
cpu1 at mainbus0: apid 1 (application processor)
cpu1: Intel(R) Xeon(R) CPU 5120 @ 1.86GHz, 1866.74 MHz
cpu1:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,
CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,SSE3,MWAIT,DS-CPL,VMX,EST
,TM2,CX16,xTPR,LONG
cpu1: 4MB 64b/line 16-way L2 cache
mpbios: bus 0 is type PCI
mpbios: bus 1 is type PCI
mpbios: bus 2 is type PCI
mpbios: bus 3 is type PCI
mpbios: bus 4 is type PCI
mpbios: bus 5 is type PCI
mpbios: bus 6 is type PCI
mpbios: bus 9 is type PCI
mpbios: bus 10 is type PCI
mpbios: bus 11 is type PCI
mpbios: bus 14 is type PCI
mpbios: bus 15 is type PCI
mpbios: bus 16 is type PCI
mpbios: bus 19 is type PCI
mpbios: bus 22 is type PCI
mpbios: bus 39 is type ISA
ioapic0 at mainbus0 apid 8 pa 0xfec0, version 20, 24 pins
ioapic1 at mainbus0 apid 9 pa 0xfec8, version 20, 24 pins
pci0 at mainbus0 bus 0: configuration mode 1
pchb0 at pci0 dev 0 function 0 vendor Intel, unknown product 0x25d8
rev 0xb1
ppb0 at pci0 dev 2 function 0 Intel 5000 PCIE rev 0xb1
pci1 at ppb0 bus 9
ppb1 at pci1 dev 0 function 0 Intel 6321ESB PCIE rev 0x01
pci2 at ppb1 bus 10
ppb2 at pci2 dev 0 function 0 Intel 6321ESB PCIE rev 0x01
pci3 at ppb2 bus 11
ppb3 at pci2 dev 1 function 0 Intel 6321ESB PCIE rev 0x01
pci4 at ppb3 bus 14
ppb4 at pci2 dev 2 function 0 Intel 6321ESB PCIE rev 0x01
pci5 at ppb4 bus 15
ppb5 at pci1 dev 0 function 3 Intel 6321ESB PCIE-PCIX rev 0x01
pci6 at ppb5 bus 16
ppb6 at pci0 dev 3 function 0 Intel 5000 PCIE rev 0xb1
pci7 at ppb6 bus 6
ppb7 at pci7 dev 0 function 0 ServerWorks PCIE-PCIX rev 0xb4
pci8 at ppb7 bus 7
ppb8 at pci8 dev 4 function 0 ServerWorks HT-1000 PCIX rev 0xb2
pci9 at ppb8 bus 8
ciss0 at pci8 dev 8 function 0 Hewlett-Packard Smart Array rev 0x00:
apic 8 int 16 (irq 5)
ciss0: 1 LD, HW rev 0, FW 1.66/1.66
scsibus0 at ciss0: 1 targets
sd0 at scsibus0 targ 0 lun 0: HP, LOGICAL VOLUME, 1.66 SCSI3 0/direct
fixed
sd0: 34699MB, 34699 cyl, 64 head, 32 sec, 512 bytes/sec, 71065440 sec
total
ppb9 at pci0 dev 4 function 0 Intel 5000 PCIE rev 0xb1
pci10 at ppb9 bus 19
ppb10 at pci0 dev 5 function 0 Intel 5000 PCIE rev 0xb1
pci11 at ppb10 bus 22
ppb11 at pci0 dev 6 function 0 vendor Intel, unknown product 0x25e6
rev 0xb1
pci12 at ppb11 bus 2
ppb12 at pci12 dev 0 function 0 ServerWorks PCIE-PCIX rev 0xc3
pci13 at ppb12 bus 3
bnx0 at pci13 dev 0 function 0 Broadcom BCM5708 rev 0x12: apic 8 int
18 (irq 10)
ppb13 at pci0 dev 7 function 0 Intel 5000 PCIE rev 0xb1
pci14 at ppb13 bus 4
ppb14 at pci14 dev 0 function 0 ServerWorks PCIE-PCIX rev 0xc3
pci15 at ppb14 bus 5
bnx1 at pci15 dev 0 function 0 Broadcom BCM5708 rev 0x12: apic 8 int
19 (irq 10)
pchb1 at pci0 dev 16 function 0 Intel 5000 Error Reporting rev 0xb1
pchb2 at pci0 dev 16 function 1 Intel 5000 Error Reporting rev 0xb1
pchb3 at pci0 dev 16 function 2 Intel 5000 Error Reporting rev 0xb1
pchb4 at pci0 dev 17 function 0 Intel 5000 Reserved rev 0xb1
pchb5 at pci0 dev 19 function 0 Intel 5000 Reserved rev 0xb1
pchb6 at pci0 dev 21 function 0 Intel 5000 FBD rev 0xb1
pchb7 at pci0 dev 22 function 0 Intel 5000 FBD rev 0xb1
uhci0 at pci0 dev 29 function 0 Intel 6321ESB USB rev 0x09: apic 8 int
16 (irq 5)
usb0 at uhci0: USB revision 1.0
uhub0 at usb0
uhub0: Intel UHCI root hub, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1 at pci0 dev 29 function 1 Intel 6321ESB USB rev 0x09: apic 8 int
17 (irq 7)
usb1 at uhci1: USB revision 1.0
uhub1 at usb1
uhub1: Intel UHCI root hub, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhci2 at pci0 dev 29 function 2 Intel 6321ESB USB rev 0x09: apic 8 int
18 (irq 10)
usb2 at uhci2: USB revision 1.0
uhub2 at usb2
uhub2: Intel UHCI