[kernel] r12343 - in dists/etch/linux-2.6.24/debian: . patches/bugfix patches/series
Dann Frazier
dannf at alioth.debian.org
Fri Oct 17 22:03:31 UTC 2008
Author: dannf
Date: Fri Oct 17 22:03:30 2008
New Revision: 12343
Log:
* cciss: Add support for new hardware (closes: #502553)
- Add PCI ids for P212, P410, P410i, P411, P812
- Read the FIFO size from the controller config instead of
hardcoding it into the driver
Added:
dists/etch/linux-2.6.24/debian/patches/bugfix/cciss-new-hardware.patch
dists/etch/linux-2.6.24/debian/patches/bugfix/cciss-read-config-to-obtain-max-outstanding-commands-per-controller.patch
dists/etch/linux-2.6.24/debian/patches/series/6~etchnhalf.7
Modified:
dists/etch/linux-2.6.24/debian/changelog
Modified: dists/etch/linux-2.6.24/debian/changelog
==============================================================================
--- dists/etch/linux-2.6.24/debian/changelog (original)
+++ dists/etch/linux-2.6.24/debian/changelog Fri Oct 17 22:03:30 2008
@@ -1,3 +1,12 @@
+linux-2.6.24 (2.6.24-6~etchnhalf.7) UNRELEASED; urgency=high
+
+ * cciss: Add support for new hardware (closes: #502553)
+ - Add PCI ids for P212, P410, P410i, P411, P812
+ - Read the FIFO size from the controller config instead of
+ hardcoding it into the driver
+
+ -- dann frazier <dannf at debian.org> Fri, 17 Oct 2008 15:07:17 -0600
+
linux-2.6.24 (2.6.24-6~etchnhalf.6) stable-security; urgency=high
* Add missing capability checks in sbni_ioctl (CVE-2008-3525)
Added: dists/etch/linux-2.6.24/debian/patches/bugfix/cciss-new-hardware.patch
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6.24/debian/patches/bugfix/cciss-new-hardware.patch Fri Oct 17 22:03:30 2008
@@ -0,0 +1,96 @@
+commit 24aac480e76c6f5d1391ac05c5e9c0eb9b0cd302
+Author: Mike Miller <mike.miller at hp.com>
+Date: Thu Jun 12 15:21:34 2008 -0700
+
+ cciss: add new hardware support
+
+ Add support for the next generation of HP Smart Array SAS/SATA
+ controllers. Shipping date is late Fall 2008.
+
+ Bump the driver version to 3.6.20 to reflect the new hardware support from
+ patch 1 of this set.
+
+ Signed-off-by: Mike Miller <mike.miller at hp.com>
+ Cc: Jens Axboe <jens.axboe at oracle.com>
+ Cc: <stable at kernel.org>
+ Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+ Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+
+diff --git a/Documentation/cciss.txt b/Documentation/cciss.txt
+index e65736c..63e59b8 100644
+--- a/Documentation/cciss.txt
++++ b/Documentation/cciss.txt
+@@ -21,6 +21,11 @@ This driver is known to work with the following cards:
+ * SA E200
+ * SA E200i
+ * SA E500
++ * SA P212
++ * SA P410
++ * SA P410i
++ * SA P411
++ * SA P812
+
+ Detecting drive failures:
+ -------------------------
+diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
+index e336b05..5f1e1cc 100644
+--- a/drivers/block/cciss.c
++++ b/drivers/block/cciss.c
+@@ -53,15 +53,16 @@
+ #include <linux/scatterlist.h>
+
+ #define CCISS_DRIVER_VERSION(maj,min,submin) ((maj<<16)|(min<<8)|(submin))
+-#define DRIVER_NAME "HP CISS Driver (v 3.6.14)"
+-#define DRIVER_VERSION CCISS_DRIVER_VERSION(3,6,14)
++#define DRIVER_NAME "HP CISS Driver (v 3.6.20)"
++#define DRIVER_VERSION CCISS_DRIVER_VERSION(3, 6, 20)
+
+ /* Embedded module documentation macros - see modules.h */
+ MODULE_AUTHOR("Hewlett-Packard Company");
+-MODULE_DESCRIPTION("Driver for HP Controller SA5xxx SA6xxx version 3.6.14");
++MODULE_DESCRIPTION("Driver for HP Smart Array Controllers");
+ MODULE_SUPPORTED_DEVICE("HP SA5i SA5i+ SA532 SA5300 SA5312 SA641 SA642 SA6400"
+- " SA6i P600 P800 P400 P400i E200 E200i E500");
+-MODULE_VERSION("3.6.14");
++ " SA6i P600 P800 P400 P400i E200 E200i E500 P700m"
++ " Smart Array G2 Series SAS/SATA Controllers");
++MODULE_VERSION("3.6.20");
+ MODULE_LICENSE("GPL");
+
+ #include "cciss_cmd.h"
+@@ -90,6 +91,11 @@ static const struct pci_device_id cciss_pci_device_id[] = {
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3237},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x323D},
++ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3241},
++ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3243},
++ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3245},
++ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3247},
++ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSE, 0x103C, 0x3249},
+ {PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
+ PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0},
+ {0,}
+@@ -123,6 +129,11 @@ static struct board_type products[] = {
+ {0x3215103C, "Smart Array E200i", &SA5_access, 120},
+ {0x3237103C, "Smart Array E500", &SA5_access, 512},
+ {0x323D103C, "Smart Array P700m", &SA5_access, 512},
++ {0x3241103C, "Smart Array P212", &SA5_access, 384},
++ {0x3243103C, "Smart Array P410", &SA5_access, 384},
++ {0x3245103C, "Smart Array P410i", &SA5_access, 384},
++ {0x3247103C, "Smart Array P411", &SA5_access, 384},
++ {0x3249103C, "Smart Array P812", &SA5_access, 384},
+ {0xFFFF103C, "Unknown Smart Array", &SA5_access, 120},
+ };
+
+diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
+index 9b940e6..eafc9d6 100644
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -716,6 +716,7 @@
+ #define PCI_DEVICE_ID_HP_CISSA 0x3220
+ #define PCI_DEVICE_ID_HP_CISSC 0x3230
+ #define PCI_DEVICE_ID_HP_CISSD 0x3238
++#define PCI_DEVICE_ID_HP_CISSE 0x323a
+ #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031
+
+ #define PCI_VENDOR_ID_PCTECH 0x1042
Added: dists/etch/linux-2.6.24/debian/patches/bugfix/cciss-read-config-to-obtain-max-outstanding-commands-per-controller.patch
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6.24/debian/patches/bugfix/cciss-read-config-to-obtain-max-outstanding-commands-per-controller.patch Fri Oct 17 22:03:30 2008
@@ -0,0 +1,130 @@
+commit 491539982aa01fa71de93c2a06ac5d890d4cf1e2
+Author: Mike Miller <mike.miller at hp.com>
+Date: Fri Jul 4 10:00:02 2008 -0700
+
+ cciss: read config to obtain max outstanding commands per controller
+
+ This patch changes the way we determine the maximum number of outstanding
+ commands for each controller.
+
+ Most Smart Array controllers can support up to 1024 commands, the notable
+ exceptions are the E200 and E200i.
+
+ The next generation of controllers which were just added support a mode of
+ operation called Zero Memory Raid (ZMR). In this mode they only support
+ 64 outstanding commands. In Full Function Raid (FFR) mode they support
+ 1024.
+
+ We have been setting the queue depth by arbitrarily assigning some value
+ for each controller. We needed a better way to set the queue depth to
+ avoid lots of annoying "fifo full" messages. So we made the driver a
+ little smarter. We now read the config table and subtract 4 from the
+ returned value. The -4 is to allow some room for ioctl calls which are
+ not tracked the same way as io commands are tracked.
+
+ Please consider this for inclusion.
+
+ Signed-off-by: Mike Miller <mike.miller at hp.com>
+ Cc: Jens Axboe <jens.axboe at oracle.com>
+ Cc: <stable at kernel.org>
+ Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+ Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+
+Adjusted to apply to Debian's 2.6.26 by dann frazier <dannf at hp.com>
+
+diff -urpN linux-source-2.6.24.orig/drivers/block/cciss.c linux-source-2.6.24/drivers/block/cciss.c
+--- linux-source-2.6.24.orig/drivers/block/cciss.c 2008-10-17 15:02:54.000000000 -0600
++++ linux-source-2.6.24/drivers/block/cciss.c 2008-10-17 15:03:52.000000000 -0600
+@@ -104,35 +104,34 @@ MODULE_DEVICE_TABLE(pci, cciss_pci_devic
+ /* board_id = Subsystem Device ID & Vendor ID
+ * product = Marketing Name for the board
+ * access = Address of the struct of function pointers
+- * nr_cmds = Number of commands supported by controller
+ */
+ static struct board_type products[] = {
+- {0x40700E11, "Smart Array 5300", &SA5_access, 512},
+- {0x40800E11, "Smart Array 5i", &SA5B_access, 512},
+- {0x40820E11, "Smart Array 532", &SA5B_access, 512},
+- {0x40830E11, "Smart Array 5312", &SA5B_access, 512},
+- {0x409A0E11, "Smart Array 641", &SA5_access, 512},
+- {0x409B0E11, "Smart Array 642", &SA5_access, 512},
+- {0x409C0E11, "Smart Array 6400", &SA5_access, 512},
+- {0x409D0E11, "Smart Array 6400 EM", &SA5_access, 512},
+- {0x40910E11, "Smart Array 6i", &SA5_access, 512},
+- {0x3225103C, "Smart Array P600", &SA5_access, 512},
+- {0x3223103C, "Smart Array P800", &SA5_access, 512},
+- {0x3234103C, "Smart Array P400", &SA5_access, 512},
+- {0x3235103C, "Smart Array P400i", &SA5_access, 512},
+- {0x3211103C, "Smart Array E200i", &SA5_access, 120},
+- {0x3212103C, "Smart Array E200", &SA5_access, 120},
+- {0x3213103C, "Smart Array E200i", &SA5_access, 120},
+- {0x3214103C, "Smart Array E200i", &SA5_access, 120},
+- {0x3215103C, "Smart Array E200i", &SA5_access, 120},
+- {0x3237103C, "Smart Array E500", &SA5_access, 512},
+- {0x323D103C, "Smart Array P700m", &SA5_access, 512},
+- {0x3241103C, "Smart Array P212", &SA5_access, 384},
+- {0x3243103C, "Smart Array P410", &SA5_access, 384},
+- {0x3245103C, "Smart Array P410i", &SA5_access, 384},
+- {0x3247103C, "Smart Array P411", &SA5_access, 384},
+- {0x3249103C, "Smart Array P812", &SA5_access, 384},
+- {0xFFFF103C, "Unknown Smart Array", &SA5_access, 120},
++ {0x40700E11, "Smart Array 5300", &SA5_access},
++ {0x40800E11, "Smart Array 5i", &SA5B_access},
++ {0x40820E11, "Smart Array 532", &SA5B_access},
++ {0x40830E11, "Smart Array 5312", &SA5B_access},
++ {0x409A0E11, "Smart Array 641", &SA5_access},
++ {0x409B0E11, "Smart Array 642", &SA5_access},
++ {0x409C0E11, "Smart Array 6400", &SA5_access},
++ {0x409D0E11, "Smart Array 6400 EM", &SA5_access},
++ {0x40910E11, "Smart Array 6i", &SA5_access},
++ {0x3225103C, "Smart Array P600", &SA5_access},
++ {0x3223103C, "Smart Array P800", &SA5_access},
++ {0x3234103C, "Smart Array P400", &SA5_access},
++ {0x3235103C, "Smart Array P400i", &SA5_access},
++ {0x3211103C, "Smart Array E200i", &SA5_access},
++ {0x3212103C, "Smart Array E200", &SA5_access},
++ {0x3213103C, "Smart Array E200i", &SA5_access},
++ {0x3214103C, "Smart Array E200i", &SA5_access},
++ {0x3215103C, "Smart Array E200i", &SA5_access},
++ {0x3237103C, "Smart Array E500", &SA5_access},
++ {0x323D103C, "Smart Array P700m", &SA5_access},
++ {0x3241103C, "Smart Array P212", &SA5_access},
++ {0x3243103C, "Smart Array P410", &SA5_access},
++ {0x3245103C, "Smart Array P410i", &SA5_access},
++ {0x3247103C, "Smart Array P411", &SA5_access},
++ {0x3249103C, "Smart Array P812", &SA5_access},
++ {0xFFFF103C, "Unknown Smart Array", &SA5_access},
+ };
+
+ /* How long to wait (in milliseconds) for board to go into simple mode */
+@@ -3040,11 +3039,20 @@ static int __devinit cciss_pci_init(ctlr
+ print_cfg_table(c->cfgtable);
+ #endif /* CCISS_DEBUG */
+
++ /* Some controllers support Zero Memory Raid (ZMR).
++ * When configured in ZMR mode the number of supported
++ * commands drops to 64. So instead of just setting an
++ * arbitrary value we make the driver a little smarter.
++ * We read the config table to tell us how many commands
++ * are supported on the controller then subtract 4 to
++ * leave a little room for ioctl calls.
++ */
++ c->max_commands = readl(&(c->cfgtable->CmdsOutMax));
+ for (i = 0; i < ARRAY_SIZE(products); i++) {
+ if (board_id == products[i].board_id) {
+ c->product_name = products[i].product_name;
+ c->access = *(products[i].access);
+- c->nr_cmds = products[i].nr_cmds;
++ c->nr_cmds = c->max_commands - 4;
+ break;
+ }
+ }
+@@ -3064,7 +3072,7 @@ static int __devinit cciss_pci_init(ctlr
+ if (subsystem_vendor_id == PCI_VENDOR_ID_HP) {
+ c->product_name = products[i-1].product_name;
+ c->access = *(products[i-1].access);
+- c->nr_cmds = products[i-1].nr_cmds;
++ c->nr_cmds = c->max_commands - 4;
+ printk(KERN_WARNING "cciss: This is an unknown "
+ "Smart Array controller.\n"
+ "cciss: Please update to the latest driver "
Added: dists/etch/linux-2.6.24/debian/patches/series/6~etchnhalf.7
==============================================================================
--- (empty file)
+++ dists/etch/linux-2.6.24/debian/patches/series/6~etchnhalf.7 Fri Oct 17 22:03:30 2008
@@ -0,0 +1,2 @@
++ bugfix/cciss-new-hardware.patch
++ bugfix/cciss-read-config-to-obtain-max-outstanding-commands-per-controller.patch
More information about the Kernel-svn-changes
mailing list