From nobody@FreeBSD.org  Mon Oct 18 22:00:20 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A1B9D106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 18 Oct 2010 22:00:20 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 5DA198FC1A
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 18 Oct 2010 22:00:20 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o9IM0JHw028457
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 18 Oct 2010 22:00:19 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o9IM0Jp4028456;
	Mon, 18 Oct 2010 22:00:19 GMT
	(envelope-from nobody)
Message-Id: <201010182200.o9IM0Jp4028456@www.freebsd.org>
Date: Mon, 18 Oct 2010 22:00:19 GMT
From: Leon Kos <leon.kos@lecad.fs.uni-lj.si>
To: freebsd-gnats-submit@FreeBSD.org
Subject: ciss(4) should increase  CISS_MAX_LOGICAL to 107
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         151564
>Category:       kern
>Synopsis:       [ciss] ciss(4) should increase  CISS_MAX_LOGICAL to 107
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    sbruno
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 18 22:10:06 UTC 2010
>Closed-Date:    Thu Apr 04 15:14:41 UTC 2013
>Last-Modified:  Thu Apr 04 15:14:41 UTC 2013
>Originator:     Leon Kos
>Release:        8.1-RELEASE
>Organization:
University of Ljubljana
>Environment:
FreeBSD forge.fs.uni-lj.si 8.1-RELEASE FreeBSD 8.1-RELEASE #1: Mon Oct 18 15:00:31 CEST 2010     leon@forge.fs.uni-lj.si:/usr/src/sys/amd64/compile/FORGE  amd64
>Description:
With HP SmartArray P812 and ZFS is not absurd to have many single logical drives that CISS limits to max 16.

ciss0: adapter claims to report absurd number of logical drives (49 > 15)

Please increase
With HP SmartArray P812 and ZFS is not absurd to have many single logical drives that CISS limits to max 16.

ciss0: adapter claims to report absurd number of logical drives (49 > 15)


Please increase

/usr/src/sys/dev/ciss/cissvar.h:#define CISS_MAX_LOGICAL      15

to 107 that is max that P812 supports.
See http://h18004.www1.hp.com/products/servers/proliantstorage/arraycontrollers/smartarrayp812/index.html?jumpid=reg_R1002_USEN

Kind regards, 
Leon Kos

>How-To-Repeat:
With more than 16 logical drives configured, ciss support is disabled!
>Fix:
Increase kernel variable.

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-scsi 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Sun Nov 21 16:56:34 UTC 2010 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=151564 

From: "xenophon\\+freebsd" <xenophon+freebsd@irtnog.org>
To: <bug-followup@FreeBSD.org>,
	<leon.kos@lecad.fs.uni-lj.si>,
	<freebsd-scsi@freebsd.org>
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL to 107
Date: Thu, 20 Dec 2012 10:10:37 -0500

 This is a multi-part message in MIME format.
 
 ------_=_NextPart_001_01CDDEC4.2B270089
 Content-Type: text/plain;
 	charset="us-ascii"
 Content-Transfer-Encoding: quoted-printable
 
 All:
 
 I've created a patch (see attached) for the ciss driver that makes the
 following changes:
 
 *	creates a boot-time tunable (hw.ciss.max_logical) that allows
 changing the maximum number of logical drives (defaults to
 CISS_MAX_LOGICAL, which currently is 15 according to
 src/sys/dev/ciss/cissvar.h)
 
 *	changes the behavior of another boot-time tunable
 (hw.ciss.expose_hidden_physical) such that a value of 2 exposes hidden
 physical direct access devices as da(4) devices, where a value of 1
 retains the original behavior of exposing them only as pass(4) devices
 
 *	updates the ciss(4) manual page regarding the above
 modifications
 
 Would a committer be willing to review this patch for potential
 inclusion into some future release of FreeBSD?  I hereby place this
 patch into the public domain.
 
 I tested this successfully using FreeBSD/x86 9.0-RELEASE-p5 on an HP
 ProLiant DL380 G3 with an on-board Smart Array 5i controller.  For
 example, I have 20 single-disk RAID-0 arrays.  Without the patch, the
 ciss driver returns the error "adapter claims to report absurd number of
 logical drives".  With the patch applied and hw.ciss.max_logical set to
 32 in /boot/loader.conf, the ciss driver correctly detects and
 configures all twenty logical drives.  Furthermore, with
 hw.ciss.expose_hidden_physical to 2, the ciss driver also correctly
 exposes the physical disks underlying each of the 20 arrays as da(4)
 devices.
 
 I plan to test this patch next week using FreeBSD/amd64 on a DL380 G4,
 which has similar specs to my G3.
 
 Best wishes,
 Matthew
 
 --=20
 I FIGHT FOR THE USERS
 
 
 
 ------_=_NextPart_001_01CDDEC4.2B270089
 Content-Type: application/octet-stream;
 	name="ciss-tunable-maxlogical-exposehidden-da.patch"
 Content-Transfer-Encoding: base64
 Content-Description: ciss-tunable-maxlogical-exposehidden-da.patch
 Content-Disposition: attachment;
 	filename="ciss-tunable-maxlogical-exposehidden-da.patch"
 
 SW5kZXg6IHN5cy9kZXYvY2lzcy9jaXNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9jaXNzL2Np
 c3MuYwkocmV2aXNpb24gMjQ0MzYxKQorKysgc3lzL2Rldi9jaXNzL2Npc3MuYwkod29ya2luZyBj
 b3B5KQpAQCAtMjQ1LDYgKzI0NSw5IEBACiAvKgogICogVGhpcyB0dW5hYmxlIGNhbiBiZSBzZXQg
 YXQgYm9vdCB0aW1lIGFuZCBjb250cm9scyB3aGV0aGVyIHBoeXNpY2FsIGRldmljZXMKICAqIHRo
 YXQgYXJlIG1hcmtlZCBoaWRkZW4gYnkgdGhlIGZpcm13YXJlIHNob3VsZCBiZSBleHBvc2VkIGFu
 eXdheXMuCisgKiAgICAwIDogaGlkZSAoZGVmYXVsdCkKKyAqICAgIDEgOiBleHBvc2U7IGV4cG9y
 dCBkaXNrcyBhcyBwYXNzdGhyb3VnaCBkZXZpY2VzCisgKiAgICAyIDogZXhwb3NlOyBleHBvcnQg
 ZGlza3MgYXMgZGlyZWN0LWFjY2VzcyBkZXZpY2VzCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQg
 Y2lzc19leHBvc2VfaGlkZGVuX3BoeXNpY2FsID0gMDsKIFRVTkFCTEVfSU5UKCJody5jaXNzLmV4
 cG9zZV9oaWRkZW5fcGh5c2ljYWwiLCAmY2lzc19leHBvc2VfaGlkZGVuX3BoeXNpY2FsKTsKQEAg
 LTI3MCw2ICsyNzMsMTMgQEAKIHN0YXRpYyBpbnQgY2lzc19mb3JjZV9pbnRlcnJ1cHQgPSAwOwog
 VFVOQUJMRV9JTlQoImh3LmNpc3MuZm9yY2VfaW50ZXJydXB0IiwgJmNpc3NfZm9yY2VfaW50ZXJy
 dXB0KTsKIAorLyoKKyAqIFRoaXMgdHVuYWJsZSBjb250cm9scyBob3cgbWFueSBsb2dpY2FsIGRy
 aXZlcyB0aGlzIGRyaXZlciBjYW4gaGFuZGxlLgorICogSXQgZGVmYXVsdHMgdG8gQ0lTU19NQVhf
 TE9HSUNBTC4KKyAqLworc3RhdGljIGludCBjaXNzX21heF9sb2dpY2FsID0gQ0lTU19NQVhfTE9H
 SUNBTDsKK1RVTkFCTEVfSU5UKCJody5jaXNzLm1heF9sb2dpY2FsIiwgJmNpc3NfbWF4X2xvZ2lj
 YWwpOworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
 KioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBDSVNTIGFkYXB0ZXJzIGFtYXppbmdseSBkb24n
 dCBoYXZlIGEgZGVmaW5lZCBwcm9ncmFtbWluZyBpbnRlcmZhY2UKICAqIHZhbHVlLiAgKE9uZSBj
 b3VsZCBzYXkgc29tZSB2ZXJ5IGRlc3BhaXJpbmcgdGhpbmdzIGFib3V0IFBDSSBhbmQKQEAgLTEz
 MTEsNyArMTMyMSw3IEBACiAJYnJlYWs7CiAgICAgY2FzZSBDSVNTX0NNRF9TVEFUVVNfREFUQV9P
 VkVSUlVOOgogCWNpc3NfcHJpbnRmKHNjLCAiV0FSTklORzogbW9yZSB1bml0cyB0aGFuIGRyaXZl
 ciBsaW1pdCAoJWQpXG4iLAotCQkgICAgQ0lTU19NQVhfTE9HSUNBTCk7CisJCSAgICBjaXNzX21h
 eF9sb2dpY2FsKTsKIAlicmVhazsKICAgICBkZWZhdWx0OgogCWNpc3NfcHJpbnRmKHNjLCAiZXJy
 b3IgZGV0ZWN0aW5nIGxvZ2ljYWwgZHJpdmUgY29uZmlndXJhdGlvbiAoJXMpXG4iLApAQCAtMTM0
 NSw3ICsxMzU1LDcgQEAKICAgICBkZWJ1Z19jYWxsZWQoMSk7CiAKICAgICBjbGwgPSBjaXNzX3Jl
 cG9ydF9sdW5zKHNjLCBDSVNTX09QQ09ERV9SRVBPUlRfTE9HSUNBTF9MVU5TLAotCQkJICAgQ0lT
 U19NQVhfTE9HSUNBTCk7CisJCQkgICBjaXNzX21heF9sb2dpY2FsKTsKICAgICBpZiAoY2xsID09
 IE5VTEwpIHsKIAllcnJvciA9IEVOWElPOwogCWdvdG8gb3V0OwpAQCAtMTM1Myw5ICsxMzYzLDkg
 QEAKIAogICAgIC8qIHNhbml0eS1jaGVjayByZXBseSAqLwogICAgIG5kcml2ZXMgPSAobnRvaGwo
 Y2xsLT5saXN0X3NpemUpIC8gc2l6ZW9mKHVuaW9uIGNpc3NfZGV2aWNlX2FkZHJlc3MpKTsKLSAg
 ICBpZiAoKG5kcml2ZXMgPCAwKSB8fCAobmRyaXZlcyA+IENJU1NfTUFYX0xPR0lDQUwpKSB7Cisg
 ICAgaWYgKChuZHJpdmVzIDwgMCkgfHwgKG5kcml2ZXMgPiBjaXNzX21heF9sb2dpY2FsKSkgewog
 CWNpc3NfcHJpbnRmKHNjLCAiYWRhcHRlciBjbGFpbXMgdG8gcmVwb3J0IGFic3VyZCBudW1iZXIg
 b2YgbG9naWNhbCBkcml2ZXMgKCVkID4gJWQpXG4iLAotCQkgICAgbmRyaXZlcywgQ0lTU19NQVhf
 TE9HSUNBTCk7CisJCSAgICBuZHJpdmVzLCBjaXNzX21heF9sb2dpY2FsKTsKIAllcnJvciA9IEVO
 WElPOwogCWdvdG8gb3V0OwogICAgIH0KQEAgLTEzNzgsMTkgKzEzODgsMTkgQEAKIAogICAgIGZv
 ciAoaSA9IDA7IGkgPD0gc2MtPmNpc3NfbWF4X2xvZ2ljYWxfYnVzOyBpKyspIHsKIAlzYy0+Y2lz
 c19sb2dpY2FsW2ldID0KLQkgICAgbWFsbG9jKENJU1NfTUFYX0xPR0lDQUwgKiBzaXplb2Yoc3Ry
 dWN0IGNpc3NfbGRyaXZlKSwKKwkgICAgbWFsbG9jKGNpc3NfbWF4X2xvZ2ljYWwgKiBzaXplb2Yo
 c3RydWN0IGNpc3NfbGRyaXZlKSwKIAkJICAgQ0lTU19NQUxMT0NfQ0xBU1MsIE1fTk9XQUlUIHwg
 TV9aRVJPKTsKIAlpZiAoc2MtPmNpc3NfbG9naWNhbFtpXSA9PSBOVUxMKSB7CiAJICAgIGVycm9y
 ID0gRU5YSU87CiAJICAgIGdvdG8gb3V0OwogCX0KIAotCWZvciAoaiA9IDA7IGogPCBDSVNTX01B
 WF9MT0dJQ0FMOyBqKyspCisJZm9yIChqID0gMDsgaiA8IGNpc3NfbWF4X2xvZ2ljYWw7IGorKykK
 IAkgICAgc2MtPmNpc3NfbG9naWNhbFtpXVtqXS5jbF9zdGF0dXMgPSBDSVNTX0xEX05PTkVYSVNU
 RU5UOwogICAgIH0KIAogCi0gICAgZm9yIChpID0gMDsgaSA8IENJU1NfTUFYX0xPR0lDQUw7IGkr
 KykgeworICAgIGZvciAoaSA9IDA7IGkgPCBjaXNzX21heF9sb2dpY2FsOyBpKyspIHsKIAlpZiAo
 aSA8IG5kcml2ZXMpIHsKIAkgICAgc3RydWN0IGNpc3NfbGRyaXZlCSpsZDsKIAkgICAgaW50CQkJ
 YnVzLCB0YXJnZXQ7CkBAIC0xOTc1LDcgKzE5ODUsNyBAQAogCWJ1c19kbWFfdGFnX2Rlc3Ryb3ko
 c2MtPmNpc3NfcGFyZW50X2RtYXQpOwogICAgIGlmIChzYy0+Y2lzc19sb2dpY2FsKSB7CiAJZm9y
 IChpID0gMDsgaSA8PSBzYy0+Y2lzc19tYXhfbG9naWNhbF9idXM7IGkrKykgewotCSAgICBmb3Ig
 KGogPSAwOyBqIDwgQ0lTU19NQVhfTE9HSUNBTDsgaisrKSB7CisJICAgIGZvciAoaiA9IDA7IGog
 PCBjaXNzX21heF9sb2dpY2FsOyBqKyspIHsKIAkJaWYgKHNjLT5jaXNzX2xvZ2ljYWxbaV1bal0u
 Y2xfbGRyaXZlKQogCQkgICAgZnJlZShzYy0+Y2lzc19sb2dpY2FsW2ldW2pdLmNsX2xkcml2ZSwg
 Q0lTU19NQUxMT0NfQ0xBU1MpOwogCQlpZiAoc2MtPmNpc3NfbG9naWNhbFtpXVtqXS5jbF9sc3Rh
 dHVzKQpAQCAtMjk1OCw5ICsyOTY4LDkgQEAKIAljcGktPmhiYV9pbnF1aXJ5ID0gUElfVEFHX0FC
 TEU7CS8qIFhYWCBpcyB0aGlzIGNvcnJlY3Q/ICovCiAJY3BpLT50YXJnZXRfc3BydCA9IDA7CiAJ
 Y3BpLT5oYmFfbWlzYyA9IDA7Ci0JY3BpLT5tYXhfdGFyZ2V0ID0gQ0lTU19NQVhfTE9HSUNBTDsK
 KwljcGktPm1heF90YXJnZXQgPSBjaXNzX21heF9sb2dpY2FsOwogCWNwaS0+bWF4X2x1biA9IDA7
 CQkvKiAnbG9naWNhbCBkcml2ZScgY2hhbm5lbCBvbmx5ICovCi0JY3BpLT5pbml0aWF0b3JfaWQg
 PSBDSVNTX01BWF9MT0dJQ0FMOworCWNwaS0+aW5pdGlhdG9yX2lkID0gY2lzc19tYXhfbG9naWNh
 bDsKIAlzdHJuY3B5KGNwaS0+c2ltX3ZpZCwgIkZyZWVCU0QiLCBTSU1fSURMRU4pOwogICAgICAg
 ICBzdHJuY3B5KGNwaS0+aGJhX3ZpZCwgIm1zbWl0aEBmcmVlYnNkLm9yZyIsIEhCQV9JRExFTik7
 CiAgICAgICAgIHN0cm5jcHkoY3BpLT5kZXZfbmFtZSwgY2FtX3NpbV9uYW1lKHNpbSksIERFVl9J
 RExFTik7CkBAIC0zMzE2LDcgKzMzMjYsOCBAQAogCSAqIGF0dGFjaGVkIGJ5IHRoZSBQQVNTIGRy
 aXZlci4KIAkgKi8KIAlpZiAoQ0lTU19JU19QSFlTSUNBTChidXMpKSB7Ci0JICAgIGlmIChTSURf
 VFlQRShpbnEpID09IFRfRElSRUNUKQorCSAgICBpZiAoKFNJRF9UWVBFKGlucSkgPT0gVF9ESVJF
 Q1QpICYmCisJICAgICAgIChjaXNzX2V4cG9zZV9oaWRkZW5fcGh5c2ljYWwgPD0gMSkpCiAJCWlu
 cS0+ZGV2aWNlID0gKGlucS0+ZGV2aWNlICYgMHhlMCkgfCBUX05PREVWSUNFOwogCSAgICByZXR1
 cm47CiAJfQpAQCAtMzg3MSw3ICszODgyLDcgQEAKICAgICAgKiBkcml2ZSBhZGRyZXNzLgogICAg
 ICAqLwogICAgIGNsbCA9IGNpc3NfcmVwb3J0X2x1bnMoc2MsIENJU1NfT1BDT0RFX1JFUE9SVF9M
 T0dJQ0FMX0xVTlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBDSVNTX01BWF9MT0dJQ0FM
 KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpc3NfbWF4X2xvZ2ljYWwpOwogICAgIGlm
 IChjbGwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zODgyLDcgKzM4OTMsNyBAQAog
 ICAgICAqIGZpcm13YXJlLgogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBzYy0+Y2lzc19t
 YXhfbG9naWNhbF9idXM7IGkrKykgewotCWZvciAoaiA9IDA7IGogPCBDSVNTX01BWF9MT0dJQ0FM
 OyBqKyspIHsKKwlmb3IgKGogPSAwOyBqIDwgY2lzc19tYXhfbG9naWNhbDsgaisrKSB7CiAJICAg
 IGxkID0gJnNjLT5jaXNzX2xvZ2ljYWxbaV1bal07CiAKIAkgICAgaWYgKGxkLT5jbF91cGRhdGUg
 PT0gMCkKQEAgLTQyOTksNyArNDMxMCw3IEBACiAJIlwyMFwxbm90aWZ5X29rXDJjb250cm9sX29w
 ZW5cM2Fib3J0aW5nXDRydW5uaW5nXDIxZmFrZV9zeW5jaFwyMmJtaWNfYWJvcnRcbiIpOwogCiAg
 ICAgZm9yIChpID0gMDsgaSA8IHNjLT5jaXNzX21heF9sb2dpY2FsX2J1czsgaSsrKSB7Ci0JZm9y
 IChqID0gMDsgaiA8IENJU1NfTUFYX0xPR0lDQUw7IGorKykgeworCWZvciAoaiA9IDA7IGogPCBj
 aXNzX21heF9sb2dpY2FsOyBqKyspIHsKIAkgICAgY2lzc19wcmludGYoc2MsICJMT0dJQ0FMIERS
 SVZFICVkOiAgIiwgaSk7CiAJICAgIGNpc3NfcHJpbnRfbGRyaXZlKHNjLCAmc2MtPmNpc3NfbG9n
 aWNhbFtpXVtqXSk7CiAJfQpJbmRleDogc2hhcmUvbWFuL21hbjQvY2lzcy40Cj09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
 LS0tIHNoYXJlL21hbi9tYW40L2Npc3MuNAkocmV2aXNpb24gMjQ0MzYxKQorKysgc2hhcmUvbWFu
 L21hbjQvY2lzcy40CSh3b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTUgQEAKIG1hcmtlZCBh
 cyBiZWluZyBtYXNrZWQuCiBNYXNrZWQgZGV2aWNlcyBjYW4gYmUgZXhwb3NlZCBieSBzZXR0aW5n
 IHRoZQogLlZhIGh3LmNpc3MuZXhwb3NlX2hpZGRlbl9waHlzaWNhbAotdHVuYWJsZSB0byBub24t
 emVybyBhdCBib290IHRpbWUuCit0dW5hYmxlIHRvIDEgYXQgYm9vdCB0aW1lLgogRGlyZWN0IEFj
 Y2VzcyBkZXZpY2VzIChzdWNoIGFzIGRpc2sKIGRyaXZlcykgYXJlIG9ubHkgZXhwb3NlZCBhcwog
 LlhyIHBhc3MgNAotZGV2aWNlcy4KK2RldmljZXMuIFRvIGV4cG9zZSB0aGVtIGFzCisuWHIgZGEg
 NAorZGV2aWNlcyBpbnN0ZWFkLCBzZXQKKy5WYSBody5jaXNzLmV4cG9zZV9oaWRkZW5fcGh5c2lj
 YWwKK3RvIDIgYXQgYm9vdCB0aW1lLgogSG90LWluc2VydGlvbiBhbmQgcmVtb3ZhbCBvZiBkZXZp
 Y2VzIGlzIHN1cHBvcnRlZCBidXQgYSBidXMKIHJlc2NhbiBtaWdodCBiZSBuZWNlc3NhcnkuCiAu
 UHAKQEAgLTkwLDYgKzk0LDEzIEBACiBtaWdodCBiZSBzb2x2ZWQgYnkgdXBkYXRpbmcgdGhlIGZp
 cm13YXJlIGFuZC9vciBzZXR0aW5nIHRoZQogLlZhIGh3LmNpc3Mubm9wX21lc3NhZ2VfaGVhcnRi
 ZWF0CiB0dW5hYmxlIHRvIG5vbi16ZXJvIGF0IGJvb3QgdGltZS4KKy5QcAorQnkgZGVmYXVsdCB0
 aGUgZHJpdmVyIHJlc3RyaWN0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbG9naWNhbCBkcml2ZXMg
 dG8gMTUgaW4KK29yZGVyIHRvIGxpbWl0IHRoZSBhbW91bnQgb2YgbWVtb3J5IHJlcXVpcmVkIGJ5
 IHRoZSBkcml2ZXIuIFRoaXMgbGltaXQgY2FuCitiZSBpbmNyZWFzZWQgKGFzIGxvbmcgYXMgdGhl
 IGNvbXB1dGVyIGhhcyBlbm91Z2ggbWVtb3J5IGJlbG93IDQgR2lCIGZvciBETUEKK0kvTykgYnkg
 c2V0dGluZyB0aGUKKy5WYSBody5jaXNzLm1heF9sb2dpY2FsCit0dW5hYmxlIHRvIHRoZSBuZXcg
 bGltaXQgYXQgYm9vdCB0aW1lLgogLlNoIEhBUkRXQVJFCiBDb250cm9sbGVycyBzdXBwb3J0ZWQg
 YnkgdGhlCiAuTm0K
 
 ------_=_NextPart_001_01CDDEC4.2B270089--

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Fri, 11 Jan 2013 12:15:41 -0800

 --=-ORZ+S4oOqTjltqlLU7pH
 Content-Type: multipart/mixed; boundary="=-qMd4ViJxxLLO8lizsr4e"
 
 
 --=-qMd4ViJxxLLO8lizsr4e
 Content-Type: text/plain; charset="UTF-8"
 Content-Transfer-Encoding: quoted-printable
 
 After speaking with HP a bit about the MAX_LOGICAL/PHYSICAL things,
 they've suggested that we simply ask the controller what the device can
 support as per http://cciss.sourceforge.net/#docs revision 1.06
 
 I came up with this patch that does that and I'm looking for more
 review.  Tested on a P400, P410 and P420 that I have. =20
 
 If this is acceptable, please break the exposing of physical disks into
 a seperate patch so I can review.
 
 Sean
 
 verbose output
 ciss0: <HP Smart Array P400> port 0xe800-0xe8ff mem
 0xfce00000-0xfcefffff,0xfcdff000-0xfcdfffff irq 16 at device 0.0 on pci6
 ciss0: PERFORMANT Transport
 ciss0: attempting to allocate 1 MSI-X vectors (4 supported)
 msi: routing MSI-X IRQ 256 to local APIC 0 vector 52
 ciss0: using IRQ 256 for MSI-X
 ciss0: Using 1 MSIX interrupt
 ciss0: using 1024 of 1024 available commands
 ciss0:   2 logical drives configured
 ciss0:   firmware 5.26
 ciss0:   1 SCSI channels
 ciss0:   signature 'CISS'
 ciss0:   valence 3
 ciss0:   supported I/O methods 0xe0000006<simple,performant>
 ciss0:   active I/O method 0x5<performant>
 ciss0:   4G page base 0x00000000
 ciss0:   interrupt coalesce delay 0us
 ciss0:   interrupt coalesce count 16
 ciss0:   max outstanding commands 1024
 ciss0:   bus types 0x200000
 ciss0:   server name ''
 ciss0:   heartbeat 0xe57
 ciss0:   max logical: 64
 ciss0:   max physical: 255
 ciss0:   max logical: 128
 ciss0: 13 physical devices
 ciss0: 2 logical drives
 ciss0: logical drive (b0t0): RAID 1(1+0), 285696MB online
 ciss0: logical drive (b0t1): RAID 0, 1399808MB online
 
 
 
 --=-qMd4ViJxxLLO8lizsr4e
 Content-Disposition: attachment; filename="ciss_probe_logical_physical.diff"
 Content-Type: text/x-patch; name="ciss_probe_logical_physical.diff"; charset="UTF-8"
 Content-Transfer-Encoding: base64
 
 SW5kZXg6IGNpc3MuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGNpc3MuYwkocmV2aXNpb24gMjQ1MzEwKQ0K
 KysrIGNpc3MuYwkod29ya2luZyBjb3B5KQ0KQEAgLTEyMDUsMTEgKzEyMDUsOSBAQA0KIA0KICAg
 ICAvKiBwcmludCBpbmZvcm1hdGlvbiAqLw0KICAgICBpZiAoYm9vdHZlcmJvc2UpIHsNCi0jaWYg
 MAkvKiBYWFggcHJveHkgdm9sdW1lcz8/PyAqLw0KIAljaXNzX3ByaW50ZihzYywgIiAgJWQgbG9n
 aWNhbCBkcml2ZSVzIGNvbmZpZ3VyZWRcbiIsDQogCQkgICAgc2MtPmNpc3NfaWQtPmNvbmZpZ3Vy
 ZWRfbG9naWNhbF9kcml2ZXMsDQogCQkgICAgKHNjLT5jaXNzX2lkLT5jb25maWd1cmVkX2xvZ2lj
 YWxfZHJpdmVzID09IDEpID8gIiIgOiAicyIpOw0KLSNlbmRpZg0KIAljaXNzX3ByaW50ZihzYywg
 IiAgZmlybXdhcmUgJTQuNHNcbiIsIHNjLT5jaXNzX2lkLT5ydW5uaW5nX2Zpcm13YXJlX3Jldmlz
 aW9uKTsNCiAJY2lzc19wcmludGYoc2MsICIgICVkIFNDU0kgY2hhbm5lbHNcbiIsIHNjLT5jaXNz
 X2lkLT5zY3NpX2J1c19jb3VudCk7DQogDQpAQCAtMTIzMiw2ICsxMjMwLDE2IEBADQogCQkgICAg
 IlwyMFwxdWx0cmEyXDJ1bHRyYTNcMTBmaWJyZTFcMTFmaWJyZTJcbiIpOw0KIAljaXNzX3ByaW50
 ZihzYywgIiAgc2VydmVyIG5hbWUgJyUuMTZzJ1xuIiwgc2MtPmNpc3NfY2ZnLT5zZXJ2ZXJfbmFt
 ZSk7DQogCWNpc3NfcHJpbnRmKHNjLCAiICBoZWFydGJlYXQgMHgleFxuIiwgc2MtPmNpc3NfY2Zn
 LT5oZWFydGJlYXQpOw0KKwlpZiAoc2MtPmNpc3NfY2ZnLT5tYXhfbG9naWNhbF9zdXBwb3J0ZWQg
 PT0gMCkgDQorCQlzYy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZCA9IENJU1NfTUFY
 X0xPR0lDQUw7DQorICAgIAljaXNzX3ByaW50ZihzYywgIiAgbWF4IGxvZ2ljYWwgbG9naWNhbCB2
 b2x1bWVzOiAlZFxuIiwNCisJCQlzYy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZCk7
 DQorCWlmIChzYy0+Y2lzc19jZmctPm1heF9waHlzaWNhbF9zdXBwb3J0ZWQgPT0gMCkgDQorCQlz
 Yy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZCA9IENJU1NfTUFYX1BIWVNJQ0FMOw0K
 KyAgICAJY2lzc19wcmludGYoc2MsICIgIG1heCBwaHlzaWNhbCBkaXNrcyBzdXBwb3J0ZWQ6ICVk
 XG4iLA0KKwkJCXNjLT5jaXNzX2NmZy0+bWF4X3BoeXNpY2FsX3N1cHBvcnRlZCk7DQorICAgIAlj
 aXNzX3ByaW50ZihzYywgIiAgbWF4IHBoeXNpY2FsIGRpc2tzIHBlciBsb2dpY2FsIHZvbHVtZTog
 JWRcbiIsDQorCQkJc2MtPmNpc3NfY2ZnLT5tYXhfcGh5c2ljYWxfcGVyX2xvZ2ljYWwpOw0KICAg
 ICB9DQogDQogb3V0Og0KQEAgLTEzMTksNyArMTMyNyw3IEBADQogCWJyZWFrOw0KICAgICBjYXNl
 IENJU1NfQ01EX1NUQVRVU19EQVRBX09WRVJSVU46DQogCWNpc3NfcHJpbnRmKHNjLCAiV0FSTklO
 RzogbW9yZSB1bml0cyB0aGFuIGRyaXZlciBsaW1pdCAoJWQpXG4iLA0KLQkJICAgIENJU1NfTUFY
 X0xPR0lDQUwpOw0KKwkJICAgIHNjLT5jaXNzX2NmZy0+bWF4X2xvZ2ljYWxfc3VwcG9ydGVkKTsN
 CiAJYnJlYWs7DQogICAgIGRlZmF1bHQ6DQogCWNpc3NfcHJpbnRmKHNjLCAiZXJyb3IgZGV0ZWN0
 aW5nIGxvZ2ljYWwgZHJpdmUgY29uZmlndXJhdGlvbiAoJXMpXG4iLA0KQEAgLTEzNTMsNyArMTM2
 MSw3IEBADQogICAgIGRlYnVnX2NhbGxlZCgxKTsNCiANCiAgICAgY2xsID0gY2lzc19yZXBvcnRf
 bHVucyhzYywgQ0lTU19PUENPREVfUkVQT1JUX0xPR0lDQUxfTFVOUywNCi0JCQkgICBDSVNTX01B
 WF9MT0dJQ0FMKTsNCisJCQkgICBzYy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZCk7
 DQogICAgIGlmIChjbGwgPT0gTlVMTCkgew0KIAllcnJvciA9IEVOWElPOw0KIAlnb3RvIG91dDsN
 CkBAIC0xMzYxLDkgKzEzNjksMTAgQEANCiANCiAgICAgLyogc2FuaXR5LWNoZWNrIHJlcGx5ICov
 DQogICAgIG5kcml2ZXMgPSAobnRvaGwoY2xsLT5saXN0X3NpemUpIC8gc2l6ZW9mKHVuaW9uIGNp
 c3NfZGV2aWNlX2FkZHJlc3MpKTsNCi0gICAgaWYgKChuZHJpdmVzIDwgMCkgfHwgKG5kcml2ZXMg
 PiBDSVNTX01BWF9MT0dJQ0FMKSkgew0KLQljaXNzX3ByaW50ZihzYywgImFkYXB0ZXIgY2xhaW1z
 IHRvIHJlcG9ydCBhYnN1cmQgbnVtYmVyIG9mIGxvZ2ljYWwgZHJpdmVzICglZCA+ICVkKVxuIiwN
 Ci0JCSAgICBuZHJpdmVzLCBDSVNTX01BWF9MT0dJQ0FMKTsNCisgICAgaWYgKChuZHJpdmVzIDwg
 MCkgfHwgKG5kcml2ZXMgPiBzYy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZCkpIHsN
 CisJY2lzc19wcmludGYoc2MsICJhZGFwdGVyIGNsYWltcyB0byByZXBvcnQgYWJzdXJkIG51bWJl
 ciINCisJCQkib2YgbG9naWNhbCBkcml2ZXMgKCVkID4gJWQpXG4iLA0KKwkgICAgCQluZHJpdmVz
 LCBzYy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZCk7DQogCWVycm9yID0gRU5YSU87
 DQogCWdvdG8gb3V0Ow0KICAgICB9DQpAQCAtMTM4NiwxOSArMTM5NSwyMCBAQA0KIA0KICAgICBm
 b3IgKGkgPSAwOyBpIDw9IHNjLT5jaXNzX21heF9sb2dpY2FsX2J1czsgaSsrKSB7DQogCXNjLT5j
 aXNzX2xvZ2ljYWxbaV0gPQ0KLQkgICAgbWFsbG9jKENJU1NfTUFYX0xPR0lDQUwgKiBzaXplb2Yo
 c3RydWN0IGNpc3NfbGRyaXZlKSwNCisJICAgIG1hbGxvYyhzYy0+Y2lzc19jZmctPm1heF9sb2dp
 Y2FsX3N1cHBvcnRlZCAqDQorCQkgICBzaXplb2Yoc3RydWN0IGNpc3NfbGRyaXZlKSwNCiAJCSAg
 IENJU1NfTUFMTE9DX0NMQVNTLCBNX05PV0FJVCB8IE1fWkVSTyk7DQogCWlmIChzYy0+Y2lzc19s
 b2dpY2FsW2ldID09IE5VTEwpIHsNCiAJICAgIGVycm9yID0gRU5YSU87DQogCSAgICBnb3RvIG91
 dDsNCiAJfQ0KIA0KLQlmb3IgKGogPSAwOyBqIDwgQ0lTU19NQVhfTE9HSUNBTDsgaisrKQ0KKwlm
 b3IgKGogPSAwOyBqIDwgc2MtPmNpc3NfY2ZnLT5tYXhfbG9naWNhbF9zdXBwb3J0ZWQ7IGorKykN
 CiAJICAgIHNjLT5jaXNzX2xvZ2ljYWxbaV1bal0uY2xfc3RhdHVzID0gQ0lTU19MRF9OT05FWElT
 VEVOVDsNCiAgICAgfQ0KIA0KIA0KLSAgICBmb3IgKGkgPSAwOyBpIDwgQ0lTU19NQVhfTE9HSUNB
 TDsgaSsrKSB7DQorICAgIGZvciAoaSA9IDA7IGkgPCBzYy0+Y2lzc19jZmctPm1heF9sb2dpY2Fs
 X3N1cHBvcnRlZDsgaSsrKSB7DQogCWlmIChpIDwgbmRyaXZlcykgew0KIAkgICAgc3RydWN0IGNp
 c3NfbGRyaXZlCSpsZDsNCiAJICAgIGludAkJCWJ1cywgdGFyZ2V0Ow0KQEAgLTE0NDAsNyArMTQ1
 MCw3IEBADQogICAgIHRhcmdldCA9IDA7DQogDQogICAgIGNsbCA9IGNpc3NfcmVwb3J0X2x1bnMo
 c2MsIENJU1NfT1BDT0RFX1JFUE9SVF9QSFlTSUNBTF9MVU5TLA0KLQkJCSAgIENJU1NfTUFYX1BI
 WVNJQ0FMKTsNCisJCQkgICBzYy0+Y2lzc19jZmctPm1heF9waHlzaWNhbF9zdXBwb3J0ZWQpOw0K
 ICAgICBpZiAoY2xsID09IE5VTEwpIHsNCiAJZXJyb3IgPSBFTlhJTzsNCiAJZ290byBvdXQ7DQpA
 QCAtMTk4Myw3ICsxOTkzLDcgQEANCiAJYnVzX2RtYV90YWdfZGVzdHJveShzYy0+Y2lzc19wYXJl
 bnRfZG1hdCk7DQogICAgIGlmIChzYy0+Y2lzc19sb2dpY2FsKSB7DQogCWZvciAoaSA9IDA7IGkg
 PD0gc2MtPmNpc3NfbWF4X2xvZ2ljYWxfYnVzOyBpKyspIHsNCi0JICAgIGZvciAoaiA9IDA7IGog
 PCBDSVNTX01BWF9MT0dJQ0FMOyBqKyspIHsNCisJICAgIGZvciAoaiA9IDA7IGogPCBzYy0+Y2lz
 c19jZmctPm1heF9sb2dpY2FsX3N1cHBvcnRlZDsgaisrKSB7DQogCQlpZiAoc2MtPmNpc3NfbG9n
 aWNhbFtpXVtqXS5jbF9sZHJpdmUpDQogCQkgICAgZnJlZShzYy0+Y2lzc19sb2dpY2FsW2ldW2pd
 LmNsX2xkcml2ZSwgQ0lTU19NQUxMT0NfQ0xBU1MpOw0KIAkJaWYgKHNjLT5jaXNzX2xvZ2ljYWxb
 aV1bal0uY2xfbHN0YXR1cykNCkBAIC0yOTY2LDkgKzI5NzYsOSBAQA0KIAljcGktPmhiYV9pbnF1
 aXJ5ID0gUElfVEFHX0FCTEU7CS8qIFhYWCBpcyB0aGlzIGNvcnJlY3Q/ICovDQogCWNwaS0+dGFy
 Z2V0X3NwcnQgPSAwOw0KIAljcGktPmhiYV9taXNjID0gMDsNCi0JY3BpLT5tYXhfdGFyZ2V0ID0g
 Q0lTU19NQVhfTE9HSUNBTDsNCisJY3BpLT5tYXhfdGFyZ2V0ID0gc2MtPmNpc3NfY2ZnLT5tYXhf
 bG9naWNhbF9zdXBwb3J0ZWQ7DQogCWNwaS0+bWF4X2x1biA9IDA7CQkvKiAnbG9naWNhbCBkcml2
 ZScgY2hhbm5lbCBvbmx5ICovDQotCWNwaS0+aW5pdGlhdG9yX2lkID0gQ0lTU19NQVhfTE9HSUNB
 TDsNCisJY3BpLT5pbml0aWF0b3JfaWQgPSBzYy0+Y2lzc19jZmctPm1heF9sb2dpY2FsX3N1cHBv
 cnRlZDsNCiAJc3RybmNweShjcGktPnNpbV92aWQsICJGcmVlQlNEIiwgU0lNX0lETEVOKTsNCiAg
 ICAgICAgIHN0cm5jcHkoY3BpLT5oYmFfdmlkLCAibXNtaXRoQGZyZWVic2Qub3JnIiwgSEJBX0lE
 TEVOKTsNCiAgICAgICAgIHN0cm5jcHkoY3BpLT5kZXZfbmFtZSwgY2FtX3NpbV9uYW1lKHNpbSks
 IERFVl9JRExFTik7DQpAQCAtMzg3OSw3ICszODg5LDcgQEANCiAgICAgICogZHJpdmUgYWRkcmVz
 cy4NCiAgICAgICovDQogICAgIGNsbCA9IGNpc3NfcmVwb3J0X2x1bnMoc2MsIENJU1NfT1BDT0RF
 X1JFUE9SVF9MT0dJQ0FMX0xVTlMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0lTU19N
 QVhfTE9HSUNBTCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmNpc3NfY2ZnLT5t
 YXhfbG9naWNhbF9zdXBwb3J0ZWQpOw0KICAgICBpZiAoY2xsID09IE5VTEwpDQogICAgICAgICBy
 ZXR1cm47DQogDQpAQCAtMzg5MCw3ICszOTAwLDcgQEANCiAgICAgICogZmlybXdhcmUuDQogICAg
 ICAqLw0KICAgICBmb3IgKGkgPSAwOyBpIDwgc2MtPmNpc3NfbWF4X2xvZ2ljYWxfYnVzOyBpKysp
 IHsNCi0JZm9yIChqID0gMDsgaiA8IENJU1NfTUFYX0xPR0lDQUw7IGorKykgew0KKwlmb3IgKGog
 PSAwOyBqIDwgc2MtPmNpc3NfY2ZnLT5tYXhfbG9naWNhbF9zdXBwb3J0ZWQ7IGorKykgew0KIAkg
 ICAgbGQgPSAmc2MtPmNpc3NfbG9naWNhbFtpXVtqXTsNCiANCiAJICAgIGlmIChsZC0+Y2xfdXBk
 YXRlID09IDApDQpAQCAtNDA1OSw3ICs0MDY5LDcgQEANCiAJICAgICAqIFJlc2NhbiB0aGUgcGh5
 c2ljYWwgbHVuIGxpc3QgZm9yIG5ldyBpdGVtcw0KIAkgICAgICovDQogCSAgICBjbGwgPSBjaXNz
 X3JlcG9ydF9sdW5zKHNjLCBDSVNTX09QQ09ERV9SRVBPUlRfUEhZU0lDQUxfTFVOUywNCi0JCQkJ
 ICAgQ0lTU19NQVhfUEhZU0lDQUwpOw0KKwkJCQkgICBzYy0+Y2lzc19jZmctPm1heF9waHlzaWNh
 bF9zdXBwb3J0ZWQpOw0KIAkgICAgaWYgKGNsbCA9PSBOVUxMKSB7DQogCQljaXNzX3ByaW50Zihz
 YywgIldhcm5pbmcsIGNhbm5vdCBnZXQgcGh5c2ljYWwgbHVuIGxpc3RcbiIpOw0KIAkJYnJlYWs7
 DQpAQCAtNDMwNyw3ICs0MzE3LDcgQEANCiAJIlwyMFwxbm90aWZ5X29rXDJjb250cm9sX29wZW5c
 M2Fib3J0aW5nXDRydW5uaW5nXDIxZmFrZV9zeW5jaFwyMmJtaWNfYWJvcnRcbiIpOw0KIA0KICAg
 ICBmb3IgKGkgPSAwOyBpIDwgc2MtPmNpc3NfbWF4X2xvZ2ljYWxfYnVzOyBpKyspIHsNCi0JZm9y
 IChqID0gMDsgaiA8IENJU1NfTUFYX0xPR0lDQUw7IGorKykgew0KKwlmb3IgKGogPSAwOyBqIDwg
 c2MtPmNpc3NfY2ZnLT5tYXhfbG9naWNhbF9zdXBwb3J0ZWQ7IGorKykgew0KIAkgICAgY2lzc19w
 cmludGYoc2MsICJMT0dJQ0FMIERSSVZFICVkOiAgIiwgaSk7DQogCSAgICBjaXNzX3ByaW50X2xk
 cml2ZShzYywgJnNjLT5jaXNzX2xvZ2ljYWxbaV1bal0pOw0KIAl9DQpJbmRleDogY2lzc3JlZy5o
 DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09DQotLS0gY2lzc3JlZy5oCShyZXZpc2lvbiAyNDUzMTApDQorKysgY2lzc3Jl
 Zy5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNDI1LDYgKzQyNSwxNSBAQA0KICNkZWZpbmUgQ0lTU19E
 UklWRVJfREFVR0hURVJfQVRUQUNIRUQJCSgxPDw4KQ0KICNkZWZpbmUgQ0lTU19EUklWRVJfU0NT
 SV9QUkVGRVRDSAkJKDE8PDkpDQogICAgIHVfaW50MzJfdAltYXhfc2dfbGVuZ3RoOwkJLyogMzEg
 aW4gb2xkZXIgZmlybXdhcmUgKi8NCisvKg0KKyAqIHRoZXNlIGZpZWxkcyBhcHBlYXIgaW4gT3Bl
 bkNJU1MgU3BlYyAxLjA2DQorICogaHR0cDovL2NjaXNzLnNvdXJjZWZvcmdlLm5ldC8jZG9jcw0K
 KyAqLw0KKyAgICB1X2ludDMyX3QJbWF4X2xvZ2ljYWxfc3VwcG9ydGVkOw0KKyAgICB1X2ludDMy
 X3QJbWF4X3BoeXNpY2FsX3N1cHBvcnRlZDsNCisgICAgdV9pbnQzMl90CW1heF9waHlzaWNhbF9w
 ZXJfbG9naWNhbDsNCisgICAgdV9pbnQzMl90CW1heF9wZXJmb21hbnRfbW9kZV9jbWRzOw0KKyAg
 ICB1X2ludDMyX3QJbWF4X2Jsb2NrX2ZldGNoX2NvdW50Ow0KIH0gX19wYWNrZWQ7DQogDQogLyoN
 Cg==
 
 
 --=-qMd4ViJxxLLO8lizsr4e--
 
 --=-ORZ+S4oOqTjltqlLU7pH
 Content-Type: application/pgp-signature; name="signature.asc"
 Content-Description: This is a digitally signed message part
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.19 (FreeBSD)
 
 iQEcBAABAgAGBQJQ8HLtAAoJEBkJRdwI6BaHnXYH/3W224hbAArOSCC3b7iOw6QK
 BLaGTzbO6aMDYr3tUVmJumAa6xv85cwcRiaf/viDbb9LSeeJaf3esCalPeGMhJUa
 ioNRx0QbdAFOPoVhqVhu+70BhAw3sqHe+2/rAHBDAqfgwKdTUyJQIH9ah+LmWWnO
 lykGgEC7Yw1Wk6aDY7QBneA5jT6E1SL069JqY5c2q9x0nxHoCWXNO1e7ErAzvbEj
 45P5d9bs3wlpdVa3CqDiTa+A8lA9QxuQ1TpPF0xgojxOXuOzaIJC7co+sbY5+uFt
 8ZnRkW/fjCBY1LJPrVu3QRuXmGipqUAba5YZW7wI2tZE2NNKCxKNFjUUU4B6UqI=
 =EgP7
 -----END PGP SIGNATURE-----
 
 --=-ORZ+S4oOqTjltqlLU7pH--
 

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Fri, 11 Jan 2013 13:51:01 -0800

 P410 + my patch
 
 ciss0: <HP Smart Array P410> port 0xd800-0xd8ff mem
 0xfb800000-0xfbbfffff,0xfbdff000-0xfbdfffff irq 30 at device 0.0 on pci5
 ciss0: PERFORMANT Transport
 ciss0: attempting to allocate 1 MSI-X vectors (16 supported)
 msi: routing MSI-X IRQ 260 to local APIC 0 vector 56
 ciss0: using IRQ 260 for MSI-X
 ciss0: Using 1 MSIX interrupt
 ciss0: using 1024 of 1024 available commands
 ciss0:   1 logical drive configured
 ciss0:   firmware 3.52
 ciss0:   1 SCSI channels
 ciss0:   signature 'CISS'
 ciss0:   valence 3
 ciss0:   supported I/O methods 0x78000007<READY,simple,performant>
 ciss0:   active I/O method 0x5<performant>
 ciss0:   4G page base 0x00000000
 ciss0:   interrupt coalesce delay 0us
 ciss0:   interrupt coalesce count 16
 ciss0:   max outstanding commands 1024
 ciss0:   bus types 0x200000
 ciss0:   server name 'USE928N4K2'
 ciss0:   heartbeat 0x4bf
 ciss0:   max logical logical volumes: 64
 ciss0:   max physical disks supported: 255
 ciss0:   max physical disks per logical volume: 128
 ciss0: 14 physical devices
 ciss0: 1 logical drive
 ciss0: logical drive (b0t0): RAID 5, 2096640MB online
 
 

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Fri, 11 Jan 2013 15:41:59 -0800

 --=-mlPbEYIf7G1O296wI1qx
 Content-Type: text/plain; charset="UTF-8"
 Content-Transfer-Encoding: quoted-printable
 
 P420 + my patch
 
 ciss0: <HP Smart Array P420> port 0x6000-0x60ff mem
 0xf7f00000-0xf7ffffff,0xf7ef0000-0xf7ef03ff irq 40 at device 0.0 on pci8
 ciss0: PERFORMANT Transport
 ciss0: attempting to allocate 1 MSI-X vectors (64 supported)
 msi: routing MSI-X IRQ 264 to local APIC 0 vector 59
 ciss0: using IRQ 264 for MSI-X
 ciss0: Using 1 MSIX interrupt
 ciss0: using 1024 of 1024 available commands
 ciss0:   1 logical drive configured
 ciss0:   firmware 1.20
 ciss0:   1 SCSI channels
 ciss0:   signature 'CISS'
 ciss0:   valence 3
 ciss0:   supported I/O methods 0x7c000047<READY,simple,performant>
 ciss0:   active I/O method 0x5<performant>
 ciss0:   4G page base 0x00000000
 ciss0:   interrupt coalesce delay 0us
 ciss0:   interrupt coalesce count 16
 ciss0:   max outstanding commands 1024
 ciss0:   bus types 0x200000
 ciss0:   server name 'CN7152001D'
 ciss0:   heartbeat 0xc27
 ciss0:   max logical logical volumes: 64
 ciss0:   max physical disks supported: 384
 ciss0:   max physical disks per logical volume: 128
 ciss0: 7 physical devices
 ciss0: 1 logical drive
 ciss0: logical drive (b0t0): RAID 1(1+0), 1907200MB online
 
 
 --=-mlPbEYIf7G1O296wI1qx
 Content-Type: application/pgp-signature; name="signature.asc"
 Content-Description: This is a digitally signed message part
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.19 (FreeBSD)
 
 iQEcBAABAgAGBQJQ8KNHAAoJEBkJRdwI6BaHGfgH/A4GStc8gvv8UWFccvKM6nI5
 VPCTj86hqgf3MCvCuoB7SA/0EF6m5EApD78oHzbG9BbI2lVGzWfJGkZNQ3Q5OkMQ
 RyYeSyA3rKvHtqmFny/XTN9sk6Ia0yMijJvYVO/zEYrTHxBwXIYqhgo1hp0nzqCO
 pAxh4pwnBW2yemt3pDvopM8bIsACtCTcUnUPImmh8M/0yW8QhSIVjqrA5LCktC9o
 tyOXhPwr5g46ux5/RyJpWJAYZX6UWDPjOkMLm5rYi9fUv+EMhD/kGwbAbNG+Mr2e
 W/mIi/zaU2h1JnQeMU2AnoGATfDa1fz5NKNL71/qf313yk448pY1ttGNoXN8Ihc=
 =r7EP
 -----END PGP SIGNATURE-----
 
 --=-mlPbEYIf7G1O296wI1qx--
 

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Fri, 11 Jan 2013 15:45:41 -0800

 heh, breaks a 6i on a HP DL380 G4
 
 
 ciss0: <HP Smart Array 6i> port 0x4000-0x40ff mem
 0xfdff0000-0xfdff1fff,0xfdf80000-0xfdfbffff irq 51 at device 3.0 on pci4
 ciss0: PERFORMANT Transport
 ciss0: got 0 MSI messages]
 ciss0: adapter claims to report absurd number of logical drives (1 > 0)
 

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc: peter <peter@FreeBSD.org>
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Fri, 11 Jan 2013 17:17:51 -0800

 --=-VU6ICzSz8eqrj1bn7pu+
 Content-Type: text/plain; charset="UTF-8"
 Content-Transfer-Encoding: 7bit
 
 ok, fixed on the 6i and older with the attached patch.  Try this one
 instead, basically I had a typo in a variable name and I was making core
 logic decisions in boot_verbose code.  :-)
 
 this also means, I'm probably going to revert svn r242089 as it might
 not be the right thing to do, but impossible to hit on older
 controllers.
 
 ciss0: <HP Smart Array 6i> port 0x4000-0x40ff mem
 0xfdff0000-0xfdff1fff,0xfdf80000-0xfdfbffff irq 51 at device 3.0 on pci4
 ciss0: PERFORMANT Transport
 ciss0: got 0 MSI messages]
 ioapic2: routing intpin 3 (PCI IRQ 51) to lapic 0 vector 52
 ciss0: using 1024 of 1024 available commands
 ciss0:   1 logical drive configured
 ciss0:   firmware 2.26
 ciss0:   2 SCSI channels
 ciss0:   signature 'CISS'
 ciss0:   valence 1
 ciss0:   supported I/O methods 0x80000006<simple,performant>
 ciss0:   active I/O method 0x5<performant>
 ciss0:   4G page base 0x00000000
 ciss0:   interrupt coalesce delay 0us
 ciss0:   interrupt coalesce count 16
 ciss0:   max outstanding commands 1024
 ciss0:   bus types 0x2<ultra3>
 ciss0:   server name ''
 ciss0:   heartbeat 0x1000008d
 ciss0:   max logical logical volumes: 63
 ciss0:   max physical disks supported: 1024
 ciss0:   max physical disks per logical volume: 0
 ciss0: 7 physical devices
 ciss0: 1 logical drive
 ciss0: logical drive (b0t0): RAID 1(1+0), 103936MB online
 
 
 --=-VU6ICzSz8eqrj1bn7pu+
 Content-Disposition: attachment; filename="ciss_probe_logical_physical.diff"
 Content-Type: text/x-patch; name="ciss_probe_logical_physical.diff"; charset="UTF-8"
 Content-Transfer-Encoding: 7bit
 
 --- //depot/yahoo/ybsd_9/src/sys/dev/ciss/ciss.c	2012-03-17 00:14:40.000000000 0000
 +++ /home/seanbru/ybsd_9/sys/dev/ciss/ciss.c	2012-03-17 00:14:40.000000000 0000
 @@ -1202,13 +1202,21 @@
      /* XXX only really required for old 5300 adapters? */
      sc->ciss_flags |= CISS_FLAG_BMIC_ABORT;
  
 +    /*
 +     * Earlier controller specs do not contain these config
 +     * entries, so assume that a 0 means its old and assign
 +     * these values to the defaults that were established 
 +     * when this driver was developed for them
 +     */
 +    if (sc->ciss_cfg->max_logical_supported == 0) 
 +        sc->ciss_cfg->max_logical_supported = CISS_MAX_LOGICAL;
 +    if (sc->ciss_cfg->max_physical_supported == 0) 
 +	sc->ciss_cfg->max_physical_supported = CISS_MAX_PHYSICAL;
      /* print information */
      if (bootverbose) {
 -#if 0	/* XXX proxy volumes??? */
  	ciss_printf(sc, "  %d logical drive%s configured\n",
  		    sc->ciss_id->configured_logical_drives,
  		    (sc->ciss_id->configured_logical_drives == 1) ? "" : "s");
 -#endif
  	ciss_printf(sc, "  firmware %4.4s\n", sc->ciss_id->running_firmware_revision);
  	ciss_printf(sc, "  %d SCSI channels\n", sc->ciss_id->scsi_bus_count);
  
 @@ -1231,6 +1239,9 @@
  		    "\20\1ultra2\2ultra3\10fibre1\11fibre2\n");
  	ciss_printf(sc, "  server name '%.16s'\n", sc->ciss_cfg->server_name);
  	ciss_printf(sc, "  heartbeat 0x%x\n", sc->ciss_cfg->heartbeat);
 +    	ciss_printf(sc, "  max logical logical volumes: %d\n", sc->ciss_cfg->max_logical_supported);
 +    	ciss_printf(sc, "  max physical disks supported: %d\n", sc->ciss_cfg->max_physical_supported);
 +    	ciss_printf(sc, "  max physical disks per logical volume: %d\n", sc->ciss_cfg->max_physical_per_logical);
      }
  
  out:
 @@ -1318,7 +1329,7 @@
  	break;
      case CISS_CMD_STATUS_DATA_OVERRUN:
  	ciss_printf(sc, "WARNING: more units than driver limit (%d)\n",
 -		    CISS_MAX_LOGICAL);
 +		    sc->ciss_cfg->max_logical_supported);
  	break;
      default:
  	ciss_printf(sc, "error detecting logical drive configuration (%s)\n",
 @@ -1352,7 +1363,7 @@
      debug_called(1);
  
      cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 -			   CISS_MAX_LOGICAL);
 +			   sc->ciss_cfg->max_logical_supported);
      if (cll == NULL) {
  	error = ENXIO;
  	goto out;
 @@ -1360,9 +1371,9 @@
  
      /* sanity-check reply */
      ndrives = (ntohl(cll->list_size) / sizeof(union ciss_device_address));
 -    if ((ndrives < 0) || (ndrives > CISS_MAX_LOGICAL)) {
 +    if ((ndrives < 0) || (ndrives > sc->ciss_cfg->max_logical_supported)) {
  	ciss_printf(sc, "adapter claims to report absurd number of logical drives (%d > %d)\n",
 -		    ndrives, CISS_MAX_LOGICAL);
 +	    	ndrives, sc->ciss_cfg->max_logical_supported);
  	error = ENXIO;
  	goto out;
      }
 @@ -1385,19 +1396,20 @@
  
      for (i = 0; i <= sc->ciss_max_logical_bus; i++) {
  	sc->ciss_logical[i] =
 -	    malloc(CISS_MAX_LOGICAL * sizeof(struct ciss_ldrive),
 +	    malloc(sc->ciss_cfg->max_logical_supported *
 +		   sizeof(struct ciss_ldrive),
  		   CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO);
  	if (sc->ciss_logical[i] == NULL) {
  	    error = ENXIO;
  	    goto out;
  	}
  
 -	for (j = 0; j < CISS_MAX_LOGICAL; j++)
 +	for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++)
  	    sc->ciss_logical[i][j].cl_status = CISS_LD_NONEXISTENT;
      }
  
  
 -    for (i = 0; i < CISS_MAX_LOGICAL; i++) {
 +    for (i = 0; i < sc->ciss_cfg->max_logical_supported; i++) {
  	if (i < ndrives) {
  	    struct ciss_ldrive	*ld;
  	    int			bus, target;
 @@ -1439,7 +1451,7 @@
      target = 0;
  
      cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 -			   CISS_MAX_PHYSICAL);
 +			   sc->ciss_cfg->max_physical_supported);
      if (cll == NULL) {
  	error = ENXIO;
  	goto out;
 @@ -1982,7 +1994,7 @@
  	bus_dma_tag_destroy(sc->ciss_parent_dmat);
      if (sc->ciss_logical) {
  	for (i = 0; i <= sc->ciss_max_logical_bus; i++) {
 -	    for (j = 0; j < CISS_MAX_LOGICAL; j++) {
 +	    for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) {
  		if (sc->ciss_logical[i][j].cl_ldrive)
  		    free(sc->ciss_logical[i][j].cl_ldrive, CISS_MALLOC_CLASS);
  		if (sc->ciss_logical[i][j].cl_lstatus)
 @@ -2965,9 +2977,9 @@
  	cpi->hba_inquiry = PI_TAG_ABLE;	/* XXX is this correct? */
  	cpi->target_sprt = 0;
  	cpi->hba_misc = 0;
 -	cpi->max_target = CISS_MAX_LOGICAL;
 +	cpi->max_target = sc->ciss_cfg->max_logical_supported;
  	cpi->max_lun = 0;		/* 'logical drive' channel only */
 -	cpi->initiator_id = CISS_MAX_LOGICAL;
 +	cpi->initiator_id = sc->ciss_cfg->max_logical_supported;
  	strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
          strncpy(cpi->hba_vid, "msmith@freebsd.org", HBA_IDLEN);
          strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
 @@ -3878,7 +3890,7 @@
       * drive address.
       */
      cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 -                           CISS_MAX_LOGICAL);
 +                           sc->ciss_cfg->max_logical_supported);
      if (cll == NULL)
          return;
  
 @@ -3889,7 +3901,7 @@
       * firmware.
       */
      for (i = 0; i < sc->ciss_max_logical_bus; i++) {
 -	for (j = 0; j < CISS_MAX_LOGICAL; j++) {
 +	for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) {
  	    ld = &sc->ciss_logical[i][j];
  
  	    if (ld->cl_update == 0)
 @@ -4058,7 +4070,7 @@
  	     * Rescan the physical lun list for new items
  	     */
  	    cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 -				   CISS_MAX_PHYSICAL);
 +				   sc->ciss_cfg->max_physical_supported);
  	    if (cll == NULL) {
  		ciss_printf(sc, "Warning, cannot get physical lun list\n");
  		break;
 @@ -4306,7 +4318,7 @@
  	"\20\1notify_ok\2control_open\3aborting\4running\21fake_synch\22bmic_abort\n");
  
      for (i = 0; i < sc->ciss_max_logical_bus; i++) {
 -	for (j = 0; j < CISS_MAX_LOGICAL; j++) {
 +	for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) {
  	    ciss_printf(sc, "LOGICAL DRIVE %d:  ", i);
  	    ciss_print_ldrive(sc, &sc->ciss_logical[i][j]);
  	}
 --- //depot/yahoo/ybsd_9/src/sys/dev/ciss/cissreg.h	2011-11-02 23:46:55.000000000 0000
 +++ /home/seanbru/ybsd_9/sys/dev/ciss/cissreg.h	2011-11-02 23:46:55.000000000 0000
 @@ -425,6 +425,15 @@
  #define CISS_DRIVER_DAUGHTER_ATTACHED		(1<<8)
  #define CISS_DRIVER_SCSI_PREFETCH		(1<<9)
      u_int32_t	max_sg_length;		/* 31 in older firmware */
 +/*
 + * these fields appear in OpenCISS Spec 1.06
 + * http://cciss.sourceforge.net/#docs
 + */
 +    u_int32_t	max_logical_supported;
 +    u_int32_t	max_physical_supported;
 +    u_int32_t	max_physical_per_logical;
 +    u_int32_t	max_perfomant_mode_cmds;
 +    u_int32_t	max_block_fetch_count;
  } __packed;
  
  /*
 
 --=-VU6ICzSz8eqrj1bn7pu+--
 
Responsible-Changed-From-To: freebsd-scsi->sbruno 
Responsible-Changed-By: sbruno 
Responsible-Changed-When: Sat Jan 12 01:22:00 UTC 2013 
Responsible-Changed-Why:  
I have updated the patch with a more reasonable version and we'll be 
splitting the submitter's original patch into multiple revisions 

http://www.freebsd.org/cgi/query-pr.cgi?pr=151564 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/151564: commit references a PR
Date: Tue, 15 Jan 2013 14:35:44 +0000 (UTC)

 Author: sbruno
 Date: Tue Jan 15 14:35:35 2013
 New Revision: 245459
 URL: http://svnweb.freebsd.org/changeset/base/245459
 
 Log:
   Satisfy the intent of kern/151564: [ciss] ciss(4) should increase
   CISS_MAX_LOGICAL to 107
   
   Submitter wanted to increase the number of logical disks supported by ciss(4)
   by simply raising the CISS_MAX_LOGICAL value even higher.  Instead, consult
   the documentation for the raid controller (OPENCISS) and poke the controller
   bits to ask it for how many logical/physical disks it can handle.
   
   Revert svn R242089 that raised CISS_MAX_LOGICAL to 64 for all controllers.
   
   For older controllers that don't support this mechanism, fallback to the old
   value of 16 logical disks.  Tested on P420, P410, P400 and 6i model ciss(4)
   controllers.
   
   This should will be MFC'd back to stable/9 stable/8 and stable/7 after the MFC
   period.
   
   PR:		kern/151564
   Reviewed by:	scottl@freebsd.org
   MFC after:	2 weeks
 
 Modified:
   head/sys/dev/ciss/ciss.c
   head/sys/dev/ciss/cissreg.h
   head/sys/dev/ciss/cissvar.h
 
 Modified: head/sys/dev/ciss/ciss.c
 ==============================================================================
 --- head/sys/dev/ciss/ciss.c	Tue Jan 15 14:09:08 2013	(r245458)
 +++ head/sys/dev/ciss/ciss.c	Tue Jan 15 14:35:35 2013	(r245459)
 @@ -1203,13 +1203,21 @@ ciss_identify_adapter(struct ciss_softc 
      /* XXX only really required for old 5300 adapters? */
      sc->ciss_flags |= CISS_FLAG_BMIC_ABORT;
  
 +    /*
 +     * Earlier controller specs do not contain these config
 +     * entries, so assume that a 0 means its old and assign
 +     * these values to the defaults that were established 
 +     * when this driver was developed for them
 +     */
 +    if (sc->ciss_cfg->max_logical_supported == 0) 
 +        sc->ciss_cfg->max_logical_supported = CISS_MAX_LOGICAL;
 +    if (sc->ciss_cfg->max_physical_supported == 0) 
 +	sc->ciss_cfg->max_physical_supported = CISS_MAX_PHYSICAL;
      /* print information */
      if (bootverbose) {
 -#if 0	/* XXX proxy volumes??? */
  	ciss_printf(sc, "  %d logical drive%s configured\n",
  		    sc->ciss_id->configured_logical_drives,
  		    (sc->ciss_id->configured_logical_drives == 1) ? "" : "s");
 -#endif
  	ciss_printf(sc, "  firmware %4.4s\n", sc->ciss_id->running_firmware_revision);
  	ciss_printf(sc, "  %d SCSI channels\n", sc->ciss_id->scsi_bus_count);
  
 @@ -1232,6 +1240,9 @@ ciss_identify_adapter(struct ciss_softc 
  		    "\20\1ultra2\2ultra3\10fibre1\11fibre2\n");
  	ciss_printf(sc, "  server name '%.16s'\n", sc->ciss_cfg->server_name);
  	ciss_printf(sc, "  heartbeat 0x%x\n", sc->ciss_cfg->heartbeat);
 +    	ciss_printf(sc, "  max logical logical volumes: %d\n", sc->ciss_cfg->max_logical_supported);
 +    	ciss_printf(sc, "  max physical disks supported: %d\n", sc->ciss_cfg->max_physical_supported);
 +    	ciss_printf(sc, "  max physical disks per logical volume: %d\n", sc->ciss_cfg->max_physical_per_logical);
      }
  
  out:
 @@ -1319,7 +1330,7 @@ ciss_report_luns(struct ciss_softc *sc, 
  	break;
      case CISS_CMD_STATUS_DATA_OVERRUN:
  	ciss_printf(sc, "WARNING: more units than driver limit (%d)\n",
 -		    CISS_MAX_LOGICAL);
 +		    sc->ciss_cfg->max_logical_supported);
  	break;
      default:
  	ciss_printf(sc, "error detecting logical drive configuration (%s)\n",
 @@ -1353,7 +1364,7 @@ ciss_init_logical(struct ciss_softc *sc)
      debug_called(1);
  
      cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 -			   CISS_MAX_LOGICAL);
 +			   sc->ciss_cfg->max_logical_supported);
      if (cll == NULL) {
  	error = ENXIO;
  	goto out;
 @@ -1361,9 +1372,9 @@ ciss_init_logical(struct ciss_softc *sc)
  
      /* sanity-check reply */
      ndrives = (ntohl(cll->list_size) / sizeof(union ciss_device_address));
 -    if ((ndrives < 0) || (ndrives > CISS_MAX_LOGICAL)) {
 +    if ((ndrives < 0) || (ndrives > sc->ciss_cfg->max_logical_supported)) {
  	ciss_printf(sc, "adapter claims to report absurd number of logical drives (%d > %d)\n",
 -		    ndrives, CISS_MAX_LOGICAL);
 +	    	ndrives, sc->ciss_cfg->max_logical_supported);
  	error = ENXIO;
  	goto out;
      }
 @@ -1386,19 +1397,20 @@ ciss_init_logical(struct ciss_softc *sc)
  
      for (i = 0; i <= sc->ciss_max_logical_bus; i++) {
  	sc->ciss_logical[i] =
 -	    malloc(CISS_MAX_LOGICAL * sizeof(struct ciss_ldrive),
 +	    malloc(sc->ciss_cfg->max_logical_supported *
 +		   sizeof(struct ciss_ldrive),
  		   CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO);
  	if (sc->ciss_logical[i] == NULL) {
  	    error = ENXIO;
  	    goto out;
  	}
  
 -	for (j = 0; j < CISS_MAX_LOGICAL; j++)
 +	for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++)
  	    sc->ciss_logical[i][j].cl_status = CISS_LD_NONEXISTENT;
      }
  
  
 -    for (i = 0; i < CISS_MAX_LOGICAL; i++) {
 +    for (i = 0; i < sc->ciss_cfg->max_logical_supported; i++) {
  	if (i < ndrives) {
  	    struct ciss_ldrive	*ld;
  	    int			bus, target;
 @@ -1440,7 +1452,7 @@ ciss_init_physical(struct ciss_softc *sc
      target = 0;
  
      cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 -			   CISS_MAX_PHYSICAL);
 +			   sc->ciss_cfg->max_physical_supported);
      if (cll == NULL) {
  	error = ENXIO;
  	goto out;
 @@ -1983,7 +1995,7 @@ ciss_free(struct ciss_softc *sc)
  	bus_dma_tag_destroy(sc->ciss_parent_dmat);
      if (sc->ciss_logical) {
  	for (i = 0; i <= sc->ciss_max_logical_bus; i++) {
 -	    for (j = 0; j < CISS_MAX_LOGICAL; j++) {
 +	    for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) {
  		if (sc->ciss_logical[i][j].cl_ldrive)
  		    free(sc->ciss_logical[i][j].cl_ldrive, CISS_MALLOC_CLASS);
  		if (sc->ciss_logical[i][j].cl_lstatus)
 @@ -2966,9 +2978,9 @@ ciss_cam_action(struct cam_sim *sim, uni
  	cpi->hba_inquiry = PI_TAG_ABLE;	/* XXX is this correct? */
  	cpi->target_sprt = 0;
  	cpi->hba_misc = 0;
 -	cpi->max_target = CISS_MAX_LOGICAL;
 +	cpi->max_target = sc->ciss_cfg->max_logical_supported;
  	cpi->max_lun = 0;		/* 'logical drive' channel only */
 -	cpi->initiator_id = CISS_MAX_LOGICAL;
 +	cpi->initiator_id = sc->ciss_cfg->max_logical_supported;
  	strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
          strncpy(cpi->hba_vid, "msmith@freebsd.org", HBA_IDLEN);
          strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
 @@ -3879,7 +3891,7 @@ ciss_notify_rescan_logical(struct ciss_s
       * drive address.
       */
      cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 -                           CISS_MAX_LOGICAL);
 +                           sc->ciss_cfg->max_logical_supported);
      if (cll == NULL)
          return;
  
 @@ -3890,7 +3902,7 @@ ciss_notify_rescan_logical(struct ciss_s
       * firmware.
       */
      for (i = 0; i < sc->ciss_max_logical_bus; i++) {
 -	for (j = 0; j < CISS_MAX_LOGICAL; j++) {
 +	for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) {
  	    ld = &sc->ciss_logical[i][j];
  
  	    if (ld->cl_update == 0)
 @@ -4059,7 +4071,7 @@ ciss_notify_hotplug(struct ciss_softc *s
  	     * Rescan the physical lun list for new items
  	     */
  	    cll = ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 -				   CISS_MAX_PHYSICAL);
 +				   sc->ciss_cfg->max_physical_supported);
  	    if (cll == NULL) {
  		ciss_printf(sc, "Warning, cannot get physical lun list\n");
  		break;
 @@ -4307,7 +4319,7 @@ ciss_print_adapter(struct ciss_softc *sc
  	"\20\1notify_ok\2control_open\3aborting\4running\21fake_synch\22bmic_abort\n");
  
      for (i = 0; i < sc->ciss_max_logical_bus; i++) {
 -	for (j = 0; j < CISS_MAX_LOGICAL; j++) {
 +	for (j = 0; j < sc->ciss_cfg->max_logical_supported; j++) {
  	    ciss_printf(sc, "LOGICAL DRIVE %d:  ", i);
  	    ciss_print_ldrive(sc, &sc->ciss_logical[i][j]);
  	}
 
 Modified: head/sys/dev/ciss/cissreg.h
 ==============================================================================
 --- head/sys/dev/ciss/cissreg.h	Tue Jan 15 14:09:08 2013	(r245458)
 +++ head/sys/dev/ciss/cissreg.h	Tue Jan 15 14:35:35 2013	(r245459)
 @@ -425,6 +425,15 @@ struct ciss_config_table
  #define CISS_DRIVER_DAUGHTER_ATTACHED		(1<<8)
  #define CISS_DRIVER_SCSI_PREFETCH		(1<<9)
      u_int32_t	max_sg_length;		/* 31 in older firmware */
 +/*
 + * these fields appear in OpenCISS Spec 1.06
 + * http://cciss.sourceforge.net/#docs
 + */
 +    u_int32_t	max_logical_supported;
 +    u_int32_t	max_physical_supported;
 +    u_int32_t	max_physical_per_logical;
 +    u_int32_t	max_perfomant_mode_cmds;
 +    u_int32_t	max_block_fetch_count;
  } __packed;
  
  /*
 
 Modified: head/sys/dev/ciss/cissvar.h
 ==============================================================================
 --- head/sys/dev/ciss/cissvar.h	Tue Jan 15 14:09:08 2013	(r245458)
 +++ head/sys/dev/ciss/cissvar.h	Tue Jan 15 14:35:35 2013	(r245459)
 @@ -45,8 +45,11 @@ typedef STAILQ_HEAD(, ciss_request)	cr_q
  
  /*
   * Maximum number of logical drives we support.
 + * If the controller does not indicate a maximum
 + * value.  This is a compatibiliy value to support
 + * older ciss controllers (e.g. model 6i)
   */
 -#define CISS_MAX_LOGICAL	63
 +#define CISS_MAX_LOGICAL	16
  
  /*
   * Maximum number of physical devices we support.
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: "Matthew X. Economou" <xenophon@irtnog.org>
To: <freebsd-scsi@FreeBSD.org>
Cc: <bug-followup@FreeBSD.org>,
	<leon.kos@lecad.fs.uni-lj.si>,
	<peter@FreeBSD.org>
Subject: RE: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL to 107
Date: Wed, 13 Feb 2013 09:11:09 -0500

 Sean,
 
 After I applied your patch to FreeBSD 9.1, the server locks up during
 boot.  I'm working on attaching a serial console in order to capture the
 boot log.
 
 Best wishes,
 Matthew
 
 --=20
 I FIGHT FOR THE USERS
 
 
 > -----Original Message-----
 > From: owner-freebsd-scsi@freebsd.org [mailto:owner-freebsd-
 > scsi@freebsd.org] On Behalf Of Sean Bruno
 > Sent: Friday, January 11, 2013 8:20 PM
 > To: freebsd-scsi@FreeBSD.org
 > Subject: Re: kern/151564: [ciss] ciss(4) should increase
 > CISS_MAX_LOGICAL to 107
 >=20
 > The following reply was made to PR kern/151564; it has been noted by
 > GNATS.
 >=20
 > From: Sean Bruno <seanbru@yahoo-inc.com>
 > To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
 > Cc: peter <peter@FreeBSD.org>
 > Subject: Re: kern/151564: [ciss] ciss(4) should increase
 > CISS_MAX_LOGICAL
 >  to 107
 > Date: Fri, 11 Jan 2013 17:17:51 -0800
 >=20
 >  --=3D-VU6ICzSz8eqrj1bn7pu+
 >  Content-Type: text/plain; charset=3D"UTF-8"
 >  Content-Transfer-Encoding: 7bit
 >=20
 >  ok, fixed on the 6i and older with the attached patch.  Try this one
 >  instead, basically I had a typo in a variable name and I was making
 core
 >  logic decisions in boot_verbose code.  :-)
 >=20
 >  this also means, I'm probably going to revert svn r242089 as it might
 >  not be the right thing to do, but impossible to hit on older
 >  controllers.
 >=20
 >  ciss0: <HP Smart Array 6i> port 0x4000-0x40ff mem
 >  0xfdff0000-0xfdff1fff,0xfdf80000-0xfdfbffff irq 51 at device 3.0 on
 pci4
 >  ciss0: PERFORMANT Transport
 >  ciss0: got 0 MSI messages]
 >  ioapic2: routing intpin 3 (PCI IRQ 51) to lapic 0 vector 52
 >  ciss0: using 1024 of 1024 available commands
 >  ciss0:   1 logical drive configured
 >  ciss0:   firmware 2.26
 >  ciss0:   2 SCSI channels
 >  ciss0:   signature 'CISS'
 >  ciss0:   valence 1
 >  ciss0:   supported I/O methods 0x80000006<simple,performant>
 >  ciss0:   active I/O method 0x5<performant>
 >  ciss0:   4G page base 0x00000000
 >  ciss0:   interrupt coalesce delay 0us
 >  ciss0:   interrupt coalesce count 16
 >  ciss0:   max outstanding commands 1024
 >  ciss0:   bus types 0x2<ultra3>
 >  ciss0:   server name ''
 >  ciss0:   heartbeat 0x1000008d
 >  ciss0:   max logical logical volumes: 63
 >  ciss0:   max physical disks supported: 1024
 >  ciss0:   max physical disks per logical volume: 0
 >  ciss0: 7 physical devices
 >  ciss0: 1 logical drive
 >  ciss0: logical drive (b0t0): RAID 1(1+0), 103936MB online
 >=20
 >=20
 >  --=3D-VU6ICzSz8eqrj1bn7pu+
 >  Content-Disposition: attachment;
 > filename=3D"ciss_probe_logical_physical.diff"
 >  Content-Type: text/x-patch; =
 name=3D"ciss_probe_logical_physical.diff";
 > charset=3D"UTF-8"
 >  Content-Transfer-Encoding: 7bit
 >=20
 >  --- //depot/yahoo/ybsd_9/src/sys/dev/ciss/ciss.c	2012-03-17
 > 00:14:40.000000000 0000
 >  +++ /home/seanbru/ybsd_9/sys/dev/ciss/ciss.c	2012-03-17
 > 00:14:40.000000000 0000
 >  @@ -1202,13 +1202,21 @@
 >       /* XXX only really required for old 5300 adapters? */
 >       sc->ciss_flags |=3D CISS_FLAG_BMIC_ABORT;
 >=20
 >  +    /*
 >  +     * Earlier controller specs do not contain these config
 >  +     * entries, so assume that a 0 means its old and assign
 >  +     * these values to the defaults that were established
 >  +     * when this driver was developed for them
 >  +     */
 >  +    if (sc->ciss_cfg->max_logical_supported =3D=3D 0)
 >  +        sc->ciss_cfg->max_logical_supported =3D CISS_MAX_LOGICAL;
 >  +    if (sc->ciss_cfg->max_physical_supported =3D=3D 0)
 >  +	sc->ciss_cfg->max_physical_supported =3D
 > CISS_MAX_PHYSICAL;
 >       /* print information */
 >       if (bootverbose) {
 >  -#if 0	/* XXX proxy volumes??? */
 >   	ciss_printf(sc, "  %d logical drive%s configured\n",
 >   		    sc->ciss_id->configured_logical_drives,
 >   		    (sc->ciss_id->configured_logical_drives =3D=3D 1) ? "" :
 > "s");
 >  -#endif
 >   	ciss_printf(sc, "  firmware %4.4s\n", sc->ciss_id-
 > >running_firmware_revision);
 >   	ciss_printf(sc, "  %d SCSI channels\n", sc->ciss_id-
 > >scsi_bus_count);
 >=20
 >  @@ -1231,6 +1239,9 @@
 >   		    "\20\1ultra2\2ultra3\10fibre1\11fibre2\n");
 >   	ciss_printf(sc, "  server name '%.16s'\n", sc->ciss_cfg-
 > >server_name);
 >   	ciss_printf(sc, "  heartbeat 0x%x\n", sc->ciss_cfg->heartbeat);
 >  +    	ciss_printf(sc, "  max logical logical volumes: %d\n",
 sc-
 > >ciss_cfg->max_logical_supported);
 >  +    	ciss_printf(sc, "  max physical disks supported: %d\n",
 sc-
 > >ciss_cfg->max_physical_supported);
 >  +    	ciss_printf(sc, "  max physical disks per logical
 volume: %d\n",
 > sc->ciss_cfg->max_physical_per_logical);
 >       }
 >=20
 >   out:
 >  @@ -1318,7 +1329,7 @@
 >   	break;
 >       case CISS_CMD_STATUS_DATA_OVERRUN:
 >   	ciss_printf(sc, "WARNING: more units than driver limit
 > (%d)\n",
 >  -		    CISS_MAX_LOGICAL);
 >  +		    sc->ciss_cfg->max_logical_supported);
 >   	break;
 >       default:
 >   	ciss_printf(sc, "error detecting logical drive configuration
 > (%s)\n",
 >  @@ -1352,7 +1363,7 @@
 >       debug_called(1);
 >=20
 >       cll =3D ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 >  -			   CISS_MAX_LOGICAL);
 >  +			   sc->ciss_cfg->max_logical_supported);
 >       if (cll =3D=3D NULL) {
 >   	error =3D ENXIO;
 >   	goto out;
 >  @@ -1360,9 +1371,9 @@
 >=20
 >       /* sanity-check reply */
 >       ndrives =3D (ntohl(cll->list_size) / sizeof(union
 ciss_device_address));
 >  -    if ((ndrives < 0) || (ndrives > CISS_MAX_LOGICAL)) {
 >  +    if ((ndrives < 0) || (ndrives > sc->ciss_cfg-
 > >max_logical_supported)) {
 >   	ciss_printf(sc, "adapter claims to report absurd number of
 > logical drives (%d > %d)\n",
 >  -		    ndrives, CISS_MAX_LOGICAL);
 >  +	    	ndrives, sc->ciss_cfg->max_logical_supported);
 >   	error =3D ENXIO;
 >   	goto out;
 >       }
 >  @@ -1385,19 +1396,20 @@
 >=20
 >       for (i =3D 0; i <=3D sc->ciss_max_logical_bus; i++) {
 >   	sc->ciss_logical[i] =3D
 >  -	    malloc(CISS_MAX_LOGICAL * sizeof(struct ciss_ldrive),
 >  +	    malloc(sc->ciss_cfg->max_logical_supported *
 >  +		   sizeof(struct ciss_ldrive),
 >   		   CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO);
 >   	if (sc->ciss_logical[i] =3D=3D NULL) {
 >   	    error =3D ENXIO;
 >   	    goto out;
 >   	}
 >=20
 >  -	for (j =3D 0; j < CISS_MAX_LOGICAL; j++)
 >  +	for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++)
 >   	    sc->ciss_logical[i][j].cl_status =3D CISS_LD_NONEXISTENT;
 >       }
 >=20
 >=20
 >  -    for (i =3D 0; i < CISS_MAX_LOGICAL; i++) {
 >  +    for (i =3D 0; i < sc->ciss_cfg->max_logical_supported; i++) {
 >   	if (i < ndrives) {
 >   	    struct ciss_ldrive	*ld;
 >   	    int			bus, target;
 >  @@ -1439,7 +1451,7 @@
 >       target =3D 0;
 >=20
 >       cll =3D ciss_report_luns(sc, CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 >  -			   CISS_MAX_PHYSICAL);
 >  +			   sc->ciss_cfg->max_physical_supported);
 >       if (cll =3D=3D NULL) {
 >   	error =3D ENXIO;
 >   	goto out;
 >  @@ -1982,7 +1994,7 @@
 >   	bus_dma_tag_destroy(sc->ciss_parent_dmat);
 >       if (sc->ciss_logical) {
 >   	for (i =3D 0; i <=3D sc->ciss_max_logical_bus; i++) {
 >  -	    for (j =3D 0; j < CISS_MAX_LOGICAL; j++) {
 >  +	    for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++) {
 >   		if (sc->ciss_logical[i][j].cl_ldrive)
 >   		    free(sc->ciss_logical[i][j].cl_ldrive,
 > CISS_MALLOC_CLASS);
 >   		if (sc->ciss_logical[i][j].cl_lstatus)
 >  @@ -2965,9 +2977,9 @@
 >   	cpi->hba_inquiry =3D PI_TAG_ABLE;	/* XXX is this correct?
 > */
 >   	cpi->target_sprt =3D 0;
 >   	cpi->hba_misc =3D 0;
 >  -	cpi->max_target =3D CISS_MAX_LOGICAL;
 >  +	cpi->max_target =3D sc->ciss_cfg->max_logical_supported;
 >   	cpi->max_lun =3D 0;		/* 'logical drive' channel only
 */
 >  -	cpi->initiator_id =3D CISS_MAX_LOGICAL;
 >  +	cpi->initiator_id =3D sc->ciss_cfg->max_logical_supported;
 >   	strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
 >           strncpy(cpi->hba_vid, "msmith@freebsd.org", HBA_IDLEN);
 >           strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
 >  @@ -3878,7 +3890,7 @@
 >        * drive address.
 >        */
 >       cll =3D ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 >  -                           CISS_MAX_LOGICAL);
 >  +                           sc->ciss_cfg->max_logical_supported);
 >       if (cll =3D=3D NULL)
 >           return;
 >=20
 >  @@ -3889,7 +3901,7 @@
 >        * firmware.
 >        */
 >       for (i =3D 0; i < sc->ciss_max_logical_bus; i++) {
 >  -	for (j =3D 0; j < CISS_MAX_LOGICAL; j++) {
 >  +	for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++) {
 >   	    ld =3D &sc->ciss_logical[i][j];
 >=20
 >   	    if (ld->cl_update =3D=3D 0)
 >  @@ -4058,7 +4070,7 @@
 >   	     * Rescan the physical lun list for new items
 >   	     */
 >   	    cll =3D ciss_report_luns(sc,
 > CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 >  -				   CISS_MAX_PHYSICAL);
 >  +				   sc->ciss_cfg-
 > >max_physical_supported);
 >   	    if (cll =3D=3D NULL) {
 >   		ciss_printf(sc, "Warning, cannot get physical lun
 > list\n");
 >   		break;
 >  @@ -4306,7 +4318,7 @@
 >=20
 > 	"\20\1notify_ok\2control_open\3aborting\4running\21fake_s
 > ynch\22bmic_abort\n");
 >=20
 >       for (i =3D 0; i < sc->ciss_max_logical_bus; i++) {
 >  -	for (j =3D 0; j < CISS_MAX_LOGICAL; j++) {
 >  +	for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++) {
 >   	    ciss_printf(sc, "LOGICAL DRIVE %d:  ", i);
 >   	    ciss_print_ldrive(sc, &sc->ciss_logical[i][j]);
 >   	}
 >  --- //depot/yahoo/ybsd_9/src/sys/dev/ciss/cissreg.h	2011-11-02
 > 23:46:55.000000000 0000
 >  +++ /home/seanbru/ybsd_9/sys/dev/ciss/cissreg.h	2011-11-02
 > 23:46:55.000000000 0000
 >  @@ -425,6 +425,15 @@
 >   #define CISS_DRIVER_DAUGHTER_ATTACHED		(1<<8)
 >   #define CISS_DRIVER_SCSI_PREFETCH		(1<<9)
 >       u_int32_t	max_sg_length;		/* 31 in older firmware
 > */
 >  +/*
 >  + * these fields appear in OpenCISS Spec 1.06
 >  + * http://cciss.sourceforge.net/#docs
 >  + */
 >  +    u_int32_t	max_logical_supported;
 >  +    u_int32_t	max_physical_supported;
 >  +    u_int32_t	max_physical_per_logical;
 >  +    u_int32_t	max_perfomant_mode_cmds;
 >  +    u_int32_t	max_block_fetch_count;
 >   } __packed;
 >=20
 >   /*
 >=20
 >  --=3D-VU6ICzSz8eqrj1bn7pu+--
 >=20
 > _______________________________________________
 > freebsd-scsi@freebsd.org mailing list
 > http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
 > To unsubscribe, send any mail to "freebsd-scsi-
 > unsubscribe@freebsd.org"

From: "xenophon\\+freebsd" <xenophon+freebsd@irtnog.org>
To: <freebsd-scsi@FreeBSD.org>
Cc: <peter@FreeBSD.org>,
	<leon.kos@lecad.fs.uni-lj.si>,
	<bug-followup@FreeBSD.org>
Subject: RE: kern/151564: [ciss] ciss(4) should increase CISS_MAX_LOGICAL to 107
Date: Wed, 13 Feb 2013 12:54:48 -0500

 OK, I captured the boot log:
 
 https://web.irtnog.org/~xenophon/pastebin/freebsd-kernel-boot-log-201302
 1300
 
 --=20
 I FIGHT FOR THE USERS
 
 
 > -----Original Message-----
 > From: owner-freebsd-scsi@freebsd.org [mailto:owner-freebsd-
 > scsi@freebsd.org] On Behalf Of Matthew X. Economou
 > Sent: Wednesday, February 13, 2013 9:11 AM
 > To: freebsd-scsi@FreeBSD.org
 > Cc: peter@FreeBSD.org; leon.kos@lecad.fs.uni-lj.si; bug-
 > followup@FreeBSD.org
 > Subject: RE: kern/151564: [ciss] ciss(4) should increase
 > CISS_MAX_LOGICAL to 107
 >=20
 > Sean,
 >=20
 > After I applied your patch to FreeBSD 9.1, the server locks up during
 > boot.  I'm working on attaching a serial console in order to capture
 the
 > boot log.
 >=20
 > Best wishes,
 > Matthew
 >=20
 > --
 > I FIGHT FOR THE USERS
 >=20
 >=20
 > > -----Original Message-----
 > > From: owner-freebsd-scsi@freebsd.org [mailto:owner-freebsd-
 > > scsi@freebsd.org] On Behalf Of Sean Bruno
 > > Sent: Friday, January 11, 2013 8:20 PM
 > > To: freebsd-scsi@FreeBSD.org
 > > Subject: Re: kern/151564: [ciss] ciss(4) should increase
 > > CISS_MAX_LOGICAL to 107
 > >
 > > The following reply was made to PR kern/151564; it has been noted
 > by
 > > GNATS.
 > >
 > > From: Sean Bruno <seanbru@yahoo-inc.com>
 > > To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
 > > Cc: peter <peter@FreeBSD.org>
 > > Subject: Re: kern/151564: [ciss] ciss(4) should increase
 > > CISS_MAX_LOGICAL
 > >  to 107
 > > Date: Fri, 11 Jan 2013 17:17:51 -0800
 > >
 > >  --=3D-VU6ICzSz8eqrj1bn7pu+
 > >  Content-Type: text/plain; charset=3D"UTF-8"
 > >  Content-Transfer-Encoding: 7bit
 > >
 > >  ok, fixed on the 6i and older with the attached patch.  Try this
 one
 > >  instead, basically I had a typo in a variable name and I was making
 > core
 > >  logic decisions in boot_verbose code.  :-)
 > >
 > >  this also means, I'm probably going to revert svn r242089 as it
 might
 > >  not be the right thing to do, but impossible to hit on older
 > >  controllers.
 > >
 > >  ciss0: <HP Smart Array 6i> port 0x4000-0x40ff mem
 > >  0xfdff0000-0xfdff1fff,0xfdf80000-0xfdfbffff irq 51 at device 3.0 on
 > pci4
 > >  ciss0: PERFORMANT Transport
 > >  ciss0: got 0 MSI messages]
 > >  ioapic2: routing intpin 3 (PCI IRQ 51) to lapic 0 vector 52
 > >  ciss0: using 1024 of 1024 available commands
 > >  ciss0:   1 logical drive configured
 > >  ciss0:   firmware 2.26
 > >  ciss0:   2 SCSI channels
 > >  ciss0:   signature 'CISS'
 > >  ciss0:   valence 1
 > >  ciss0:   supported I/O methods 0x80000006<simple,performant>
 > >  ciss0:   active I/O method 0x5<performant>
 > >  ciss0:   4G page base 0x00000000
 > >  ciss0:   interrupt coalesce delay 0us
 > >  ciss0:   interrupt coalesce count 16
 > >  ciss0:   max outstanding commands 1024
 > >  ciss0:   bus types 0x2<ultra3>
 > >  ciss0:   server name ''
 > >  ciss0:   heartbeat 0x1000008d
 > >  ciss0:   max logical logical volumes: 63
 > >  ciss0:   max physical disks supported: 1024
 > >  ciss0:   max physical disks per logical volume: 0
 > >  ciss0: 7 physical devices
 > >  ciss0: 1 logical drive
 > >  ciss0: logical drive (b0t0): RAID 1(1+0), 103936MB online
 > >
 > >
 > >  --=3D-VU6ICzSz8eqrj1bn7pu+
 > >  Content-Disposition: attachment;
 > > filename=3D"ciss_probe_logical_physical.diff"
 > >  Content-Type: text/x-patch;
 > name=3D"ciss_probe_logical_physical.diff";
 > > charset=3D"UTF-8"
 > >  Content-Transfer-Encoding: 7bit
 > >
 > >  --- //depot/yahoo/ybsd_9/src/sys/dev/ciss/ciss.c	2012-03-17
 > > 00:14:40.000000000 0000
 > >  +++ /home/seanbru/ybsd_9/sys/dev/ciss/ciss.c	2012-03-17
 > > 00:14:40.000000000 0000
 > >  @@ -1202,13 +1202,21 @@
 > >       /* XXX only really required for old 5300 adapters? */
 > >       sc->ciss_flags |=3D CISS_FLAG_BMIC_ABORT;
 > >
 > >  +    /*
 > >  +     * Earlier controller specs do not contain these config
 > >  +     * entries, so assume that a 0 means its old and assign
 > >  +     * these values to the defaults that were established
 > >  +     * when this driver was developed for them
 > >  +     */
 > >  +    if (sc->ciss_cfg->max_logical_supported =3D=3D 0)
 > >  +        sc->ciss_cfg->max_logical_supported =3D CISS_MAX_LOGICAL;
 > >  +    if (sc->ciss_cfg->max_physical_supported =3D=3D 0)
 > >  +	sc->ciss_cfg->max_physical_supported =3D
 > > CISS_MAX_PHYSICAL;
 > >       /* print information */
 > >       if (bootverbose) {
 > >  -#if 0	/* XXX proxy volumes??? */
 > >   	ciss_printf(sc, "  %d logical drive%s configured\n",
 > >   		    sc->ciss_id->configured_logical_drives,
 > >   		    (sc->ciss_id->configured_logical_drives =3D=3D 1) ? "" :
 > > "s");
 > >  -#endif
 > >   	ciss_printf(sc, "  firmware %4.4s\n", sc->ciss_id-
 > > >running_firmware_revision);
 > >   	ciss_printf(sc, "  %d SCSI channels\n", sc->ciss_id-
 > > >scsi_bus_count);
 > >
 > >  @@ -1231,6 +1239,9 @@
 > >   		    "\20\1ultra2\2ultra3\10fibre1\11fibre2\n");
 > >   	ciss_printf(sc, "  server name '%.16s'\n", sc->ciss_cfg-
 > > >server_name);
 > >   	ciss_printf(sc, "  heartbeat 0x%x\n", sc->ciss_cfg->heartbeat);
 > >  +    	ciss_printf(sc, "  max logical logical volumes: %d\n",
 > sc-
 > > >ciss_cfg->max_logical_supported);
 > >  +    	ciss_printf(sc, "  max physical disks supported: %d\n",
 > sc-
 > > >ciss_cfg->max_physical_supported);
 > >  +    	ciss_printf(sc, "  max physical disks per logical
 > volume: %d\n",
 > > sc->ciss_cfg->max_physical_per_logical);
 > >       }
 > >
 > >   out:
 > >  @@ -1318,7 +1329,7 @@
 > >   	break;
 > >       case CISS_CMD_STATUS_DATA_OVERRUN:
 > >   	ciss_printf(sc, "WARNING: more units than driver limit
 > > (%d)\n",
 > >  -		    CISS_MAX_LOGICAL);
 > >  +		    sc->ciss_cfg->max_logical_supported);
 > >   	break;
 > >       default:
 > >   	ciss_printf(sc, "error detecting logical drive configuration
 > > (%s)\n",
 > >  @@ -1352,7 +1363,7 @@
 > >       debug_called(1);
 > >
 > >       cll =3D ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 > >  -			   CISS_MAX_LOGICAL);
 > >  +			   sc->ciss_cfg->max_logical_supported);
 > >       if (cll =3D=3D NULL) {
 > >   	error =3D ENXIO;
 > >   	goto out;
 > >  @@ -1360,9 +1371,9 @@
 > >
 > >       /* sanity-check reply */
 > >       ndrives =3D (ntohl(cll->list_size) / sizeof(union
 > ciss_device_address));
 > >  -    if ((ndrives < 0) || (ndrives > CISS_MAX_LOGICAL)) {
 > >  +    if ((ndrives < 0) || (ndrives > sc->ciss_cfg-
 > > >max_logical_supported)) {
 > >   	ciss_printf(sc, "adapter claims to report absurd number of
 > > logical drives (%d > %d)\n",
 > >  -		    ndrives, CISS_MAX_LOGICAL);
 > >  +	    	ndrives, sc->ciss_cfg->max_logical_supported);
 > >   	error =3D ENXIO;
 > >   	goto out;
 > >       }
 > >  @@ -1385,19 +1396,20 @@
 > >
 > >       for (i =3D 0; i <=3D sc->ciss_max_logical_bus; i++) {
 > >   	sc->ciss_logical[i] =3D
 > >  -	    malloc(CISS_MAX_LOGICAL * sizeof(struct ciss_ldrive),
 > >  +	    malloc(sc->ciss_cfg->max_logical_supported *
 > >  +		   sizeof(struct ciss_ldrive),
 > >   		   CISS_MALLOC_CLASS, M_NOWAIT | M_ZERO);
 > >   	if (sc->ciss_logical[i] =3D=3D NULL) {
 > >   	    error =3D ENXIO;
 > >   	    goto out;
 > >   	}
 > >
 > >  -	for (j =3D 0; j < CISS_MAX_LOGICAL; j++)
 > >  +	for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++)
 > >   	    sc->ciss_logical[i][j].cl_status =3D CISS_LD_NONEXISTENT;
 > >       }
 > >
 > >
 > >  -    for (i =3D 0; i < CISS_MAX_LOGICAL; i++) {
 > >  +    for (i =3D 0; i < sc->ciss_cfg->max_logical_supported; i++) {
 > >   	if (i < ndrives) {
 > >   	    struct ciss_ldrive	*ld;
 > >   	    int			bus, target;
 > >  @@ -1439,7 +1451,7 @@
 > >       target =3D 0;
 > >
 > >       cll =3D ciss_report_luns(sc,
 > CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 > >  -			   CISS_MAX_PHYSICAL);
 > >  +			   sc->ciss_cfg->max_physical_supported);
 > >       if (cll =3D=3D NULL) {
 > >   	error =3D ENXIO;
 > >   	goto out;
 > >  @@ -1982,7 +1994,7 @@
 > >   	bus_dma_tag_destroy(sc->ciss_parent_dmat);
 > >       if (sc->ciss_logical) {
 > >   	for (i =3D 0; i <=3D sc->ciss_max_logical_bus; i++) {
 > >  -	    for (j =3D 0; j < CISS_MAX_LOGICAL; j++) {
 > >  +	    for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++) {
 > >   		if (sc->ciss_logical[i][j].cl_ldrive)
 > >   		    free(sc->ciss_logical[i][j].cl_ldrive,
 > > CISS_MALLOC_CLASS);
 > >   		if (sc->ciss_logical[i][j].cl_lstatus)
 > >  @@ -2965,9 +2977,9 @@
 > >   	cpi->hba_inquiry =3D PI_TAG_ABLE;	/* XXX is this correct?
 > > */
 > >   	cpi->target_sprt =3D 0;
 > >   	cpi->hba_misc =3D 0;
 > >  -	cpi->max_target =3D CISS_MAX_LOGICAL;
 > >  +	cpi->max_target =3D sc->ciss_cfg->max_logical_supported;
 > >   	cpi->max_lun =3D 0;		/* 'logical drive' channel only
 > */
 > >  -	cpi->initiator_id =3D CISS_MAX_LOGICAL;
 > >  +	cpi->initiator_id =3D sc->ciss_cfg->max_logical_supported;
 > >   	strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
 > >           strncpy(cpi->hba_vid, "msmith@freebsd.org", HBA_IDLEN);
 > >           strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
 > >  @@ -3878,7 +3890,7 @@
 > >        * drive address.
 > >        */
 > >       cll =3D ciss_report_luns(sc, CISS_OPCODE_REPORT_LOGICAL_LUNS,
 > >  -                           CISS_MAX_LOGICAL);
 > >  +                           sc->ciss_cfg->max_logical_supported);
 > >       if (cll =3D=3D NULL)
 > >           return;
 > >
 > >  @@ -3889,7 +3901,7 @@
 > >        * firmware.
 > >        */
 > >       for (i =3D 0; i < sc->ciss_max_logical_bus; i++) {
 > >  -	for (j =3D 0; j < CISS_MAX_LOGICAL; j++) {
 > >  +	for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++) {
 > >   	    ld =3D &sc->ciss_logical[i][j];
 > >
 > >   	    if (ld->cl_update =3D=3D 0)
 > >  @@ -4058,7 +4070,7 @@
 > >   	     * Rescan the physical lun list for new items
 > >   	     */
 > >   	    cll =3D ciss_report_luns(sc,
 > > CISS_OPCODE_REPORT_PHYSICAL_LUNS,
 > >  -				   CISS_MAX_PHYSICAL);
 > >  +				   sc->ciss_cfg-
 > > >max_physical_supported);
 > >   	    if (cll =3D=3D NULL) {
 > >   		ciss_printf(sc, "Warning, cannot get physical lun
 > > list\n");
 > >   		break;
 > >  @@ -4306,7 +4318,7 @@
 > >
 > > 	"\20\1notify_ok\2control_open\3aborting\4running\21fake_s
 > > ynch\22bmic_abort\n");
 > >
 > >       for (i =3D 0; i < sc->ciss_max_logical_bus; i++) {
 > >  -	for (j =3D 0; j < CISS_MAX_LOGICAL; j++) {
 > >  +	for (j =3D 0; j < sc->ciss_cfg->max_logical_supported; j++) {
 > >   	    ciss_printf(sc, "LOGICAL DRIVE %d:  ", i);
 > >   	    ciss_print_ldrive(sc, &sc->ciss_logical[i][j]);
 > >   	}
 > >  --- //depot/yahoo/ybsd_9/src/sys/dev/ciss/cissreg.h	2011-
 > 11-02
 > > 23:46:55.000000000 0000
 > >  +++ /home/seanbru/ybsd_9/sys/dev/ciss/cissreg.h	2011-11-02
 > > 23:46:55.000000000 0000
 > >  @@ -425,6 +425,15 @@
 > >   #define CISS_DRIVER_DAUGHTER_ATTACHED		(1<<8)
 > >   #define CISS_DRIVER_SCSI_PREFETCH		(1<<9)
 > >       u_int32_t	max_sg_length;		/* 31 in older firmware
 > > */
 > >  +/*
 > >  + * these fields appear in OpenCISS Spec 1.06
 > >  + * http://cciss.sourceforge.net/#docs
 > >  + */
 > >  +    u_int32_t	max_logical_supported;
 > >  +    u_int32_t	max_physical_supported;
 > >  +    u_int32_t	max_physical_per_logical;
 > >  +    u_int32_t	max_perfomant_mode_cmds;
 > >  +    u_int32_t	max_block_fetch_count;
 > >   } __packed;
 > >
 > >   /*
 > >
 > >  --=3D-VU6ICzSz8eqrj1bn7pu+--
 > >
 > > _______________________________________________
 > > freebsd-scsi@freebsd.org mailing list
 > > http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
 > > To unsubscribe, send any mail to "freebsd-scsi-
 > > unsubscribe@freebsd.org"
 > _______________________________________________
 > freebsd-scsi@freebsd.org mailing list
 > http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
 > To unsubscribe, send any mail to "freebsd-scsi-
 > unsubscribe@freebsd.org"

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Wed, 13 Feb 2013 10:41:17 -0800

 The controller (5i) reports that it cannot support more than 15 logical
 disks and is not reporting max physical, which means its defaulting to 
 
 The machine show reports that it can support a MAX logical drives of 15.
 That value *should* be coming from the ciss 5i firmware with my patch.
 The server reports that 20 logical drives are configured.
 
 It should not hang with my patch.  I think that this is a bug.
 
 I do not think that you should have more than *max* logical configured.
 Did the raid controller allow you to do this or are you doing something
 else here with custom tools to override firmware settings.
 
 From your output, it looks like you are running an earlier version of my
 patch, can you verify that you applied
 http://svnweb.freebsd.org/changeset/base/245459 to your kernel?  I ask
 because your output displays:
 
 "ciss0:   max physical disks supported: 0"
 
 That can't happen.  
 
 Sean
 

From: Sean Bruno <seanbru@yahoo-inc.com>
To: bug-followup@FreeBSD.org, leon.kos@lecad.fs.uni-lj.si
Cc:  
Subject: Re: kern/151564: [ciss] ciss(4) should increase  CISS_MAX_LOGICAL
 to 107
Date: Thu, 21 Mar 2013 16:55:09 -0700

 My patches have been committed to stable/9 and are pending MFC to
 stable/8 ... If you can test, that would be great.
 
State-Changed-From-To: open->closed 
State-Changed-By: sbruno 
State-Changed-When: Thu Apr 4 15:14:05 UTC 2013 
State-Changed-Why:  
Resolved on all stable branches at this time and has been 
slated for 8.4 release as well. 


http://www.freebsd.org/cgi/query-pr.cgi?pr=151564 
>Unformatted:
