Author: cieciwa Date: Tue Mar 1 10:42:32 2005 GMT
Module: SOURCES Tag: HEAD
---- Log message:
IPS driver bacport from 2.6.10
---- Files affected:
SOURCES:
IPS-backport_from_2_6_10.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/IPS-backport_from_2_6_10.patch
diff -u /dev/null SOURCES/IPS-backport_from_2_6_10.patch:1.1
--- /dev/null Tue Mar 1 11:42:32 2005
+++ SOURCES/IPS-backport_from_2_6_10.patch Tue Mar 1 11:42:27 2005
@@ -0,0 +1,446 @@
+diff -Nur linux-2.6.8.1.org/drivers/scsi/ips.c linux-2.6.8.1/drivers/scsi/ips.c
+--- linux-2.6.8.1.org/drivers/scsi/ips.c 2004-08-14 12:54:46.000000000
+0200
++++ linux-2.6.8.1/drivers/scsi/ips.c 2005-03-01 11:34:56.360361240 +0100
+@@ -133,6 +133,10 @@
+ /* 6.10.00 - Remove 1G Addressing Limitations
*/
+ /* 6.11.xx - Get VersionInfo buffer off the stack ! DDTS 60401
*/
+ /* 6.11.xx - Make Logical Drive Info structure safe for DMA DDTS 60639
*/
++/* 7.10.xx - Add highmem_io flag in SCSI Templete for 2.4 kernels
*/
++/* - Fix path/name for scsi_hosts.h include for 2.6 kernels
*/
++/* - Fix sort order of 7k
*/
++/* - Remove 3 unused "inline" functions
*/
+
/*****************************************************************************/
+
+ /*
+@@ -176,7 +180,13 @@
+ #include <scsi/sg.h>
+
+ #include "scsi.h"
++
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,5,0)
++#include "hosts.h"
++#else
+ #include <scsi/scsi_host.h>
++#endif
++
+ #include "ips.h"
+
+ #include <linux/module.h>
+@@ -191,14 +201,14 @@
+
+ #ifdef MODULE
+ static char *ips = NULL;
+-MODULE_PARM(ips, "s");
++module_param(ips, charp, 0);
+ #endif
+
+ /*
+ * DRIVER_VER
+ */
+-#define IPS_VERSION_HIGH "7.00"
+-#define IPS_VERSION_LOW ".15 "
++#define IPS_VERSION_HIGH "7.10"
++#define IPS_VERSION_LOW ".18 "
+
+ #if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
+ #warning "This driver has only been tested on the x86/ia64/x86_64 platforms"
+@@ -215,7 +225,7 @@
+ #endif
+ #else
+ #define IPS_SG_ADDRESS(sg) (page_address((sg)->page) ? \
+- page_address((sg)->page)+(sg)->offset :
0)
++ page_address((sg)->page)+(sg)->offset :
NULL)
+ #define IPS_LOCK_SAVE(lock,flags) do{spin_lock(lock);(void)flags;}while(0)
+ #define IPS_UNLOCK_RESTORE(lock,flags)
do{spin_unlock(lock);(void)flags;}while(0)
+ #endif
+@@ -278,6 +288,9 @@
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+ .use_new_eh_code = 1,
+ #endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20) && LINUX_VERSION_CODE <
KERNEL_VERSION(2,5,0)
++ .highmem_io = 1,
++#endif
+ };
+
+ IPS_DEFINE_COMPAT_TABLE( Compatable ); /* Version Compatability Table
*/
+@@ -474,21 +487,17 @@
+ static uint32_t ips_statupd_copperhead_memio(ips_ha_t *);
+ static uint32_t ips_statupd_morpheus(ips_ha_t *);
+ static ips_scb_t *ips_getscb(ips_ha_t *);
+-static inline void ips_putq_scb_head(ips_scb_queue_t *, ips_scb_t *);
+-static inline void ips_putq_scb_tail(ips_scb_queue_t *, ips_scb_t *);
+-static inline void ips_putq_wait_head(ips_wait_queue_t *, Scsi_Cmnd *);
+-static inline void ips_putq_wait_tail(ips_wait_queue_t *, Scsi_Cmnd *);
+-static inline void ips_putq_copp_head(ips_copp_queue_t *,
++static void ips_putq_scb_head(ips_scb_queue_t *, ips_scb_t *);
++static void ips_putq_wait_tail(ips_wait_queue_t *, Scsi_Cmnd *);
++static void ips_putq_copp_tail(ips_copp_queue_t *,
+ ips_copp_wait_item_t *);
+-static inline void ips_putq_copp_tail(ips_copp_queue_t *,
+- ips_copp_wait_item_t *);
+-static inline ips_scb_t *ips_removeq_scb_head(ips_scb_queue_t *);
+-static inline ips_scb_t *ips_removeq_scb(ips_scb_queue_t *, ips_scb_t *);
+-static inline Scsi_Cmnd *ips_removeq_wait_head(ips_wait_queue_t *);
+-static inline Scsi_Cmnd *ips_removeq_wait(ips_wait_queue_t *, Scsi_Cmnd *);
+-static inline ips_copp_wait_item_t *ips_removeq_copp(ips_copp_queue_t *,
++static ips_scb_t *ips_removeq_scb_head(ips_scb_queue_t *);
++static ips_scb_t *ips_removeq_scb(ips_scb_queue_t *, ips_scb_t *);
++static Scsi_Cmnd *ips_removeq_wait_head(ips_wait_queue_t *);
++static Scsi_Cmnd *ips_removeq_wait(ips_wait_queue_t *, Scsi_Cmnd *);
++static ips_copp_wait_item_t *ips_removeq_copp(ips_copp_queue_t *,
+ ips_copp_wait_item_t *);
+-static inline ips_copp_wait_item_t *ips_removeq_copp_head(ips_copp_queue_t *);
++static ips_copp_wait_item_t *ips_removeq_copp_head(ips_copp_queue_t *);
+
+ static int ips_is_passthru(Scsi_Cmnd *);
+ static int ips_make_passthru(ips_ha_t *, Scsi_Cmnd *, ips_scb_t *, int);
+@@ -1885,7 +1894,7 @@
+ /* Fill in a single scb sg_list element from an address */
+ /* return a -1 if a breakup occurred */
+ /****************************************************************************/
+-static inline int
++static int
+ ips_fill_scb_sg_single(ips_ha_t * ha, dma_addr_t busaddr,
+ ips_scb_t * scb, int indx, unsigned int e_len)
+ {
+@@ -2950,7 +2959,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline void
++static void
+ ips_putq_scb_head(ips_scb_queue_t * queue, ips_scb_t * item)
+ {
+ METHOD_TRACE("ips_putq_scb_head", 1);
+@@ -2969,38 +2978,6 @@
+
+ /****************************************************************************/
+ /* */
+-/* Routine Name: ips_putq_scb_tail */
+-/* */
+-/* Routine Description: */
+-/* */
+-/* Add an item to the tail of the queue */
+-/* */
+-/* ASSUMED to be called from within the HA lock */
+-/* */
+-/****************************************************************************/
+-static inline void
+-ips_putq_scb_tail(ips_scb_queue_t * queue, ips_scb_t * item)
+-{
+- METHOD_TRACE("ips_putq_scb_tail", 1);
+-
+- if (!item)
+- return;
+-
+- item->q_next = NULL;
+-
+- if (queue->tail)
+- queue->tail->q_next = item;
+-
+- queue->tail = item;
+-
+- if (!queue->head)
+- queue->head = item;
+-
+- queue->count++;
+-}
+-
+-/****************************************************************************/
+-/* */
+ /* Routine Name: ips_removeq_scb_head */
+ /* */
+ /* Routine Description: */
+@@ -3010,7 +2987,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline ips_scb_t *
++static ips_scb_t *
+ ips_removeq_scb_head(ips_scb_queue_t * queue)
+ {
+ ips_scb_t *item;
+@@ -3045,7 +3022,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline ips_scb_t *
++static ips_scb_t *
+ ips_removeq_scb(ips_scb_queue_t * queue, ips_scb_t * item)
+ {
+ ips_scb_t *p;
+@@ -3082,34 +3059,6 @@
+
+ /****************************************************************************/
+ /* */
+-/* Routine Name: ips_putq_wait_head */
+-/* */
+-/* Routine Description: */
+-/* */
+-/* Add an item to the head of the queue */
+-/* */
+-/* ASSUMED to be called from within the HA lock */
+-/* */
+-/****************************************************************************/
+-static inline void
+-ips_putq_wait_head(ips_wait_queue_t * queue, Scsi_Cmnd * item)
+-{
+- METHOD_TRACE("ips_putq_wait_head", 1);
+-
+- if (!item)
+- return;
+-
+- item->host_scribble = (char *) queue->head;
+- queue->head = item;
+-
+- if (!queue->tail)
+- queue->tail = item;
+-
+- queue->count++;
+-}
+-
+-/****************************************************************************/
+-/* */
+ /* Routine Name: ips_putq_wait_tail */
+ /* */
+ /* Routine Description: */
+@@ -3119,7 +3068,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline void
++static void
+ ips_putq_wait_tail(ips_wait_queue_t * queue, Scsi_Cmnd * item)
+ {
+ METHOD_TRACE("ips_putq_wait_tail", 1);
+@@ -3151,7 +3100,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline Scsi_Cmnd *
++static Scsi_Cmnd *
+ ips_removeq_wait_head(ips_wait_queue_t * queue)
+ {
+ Scsi_Cmnd *item;
+@@ -3186,7 +3135,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline Scsi_Cmnd *
++static Scsi_Cmnd *
+ ips_removeq_wait(ips_wait_queue_t * queue, Scsi_Cmnd * item)
+ {
+ Scsi_Cmnd *p;
+@@ -3223,34 +3172,6 @@
+
+ /****************************************************************************/
+ /* */
+-/* Routine Name: ips_putq_copp_head */
+-/* */
+-/* Routine Description: */
+-/* */
+-/* Add an item to the head of the queue */
+-/* */
+-/* ASSUMED to be called from within the HA lock */
+-/* */
+-/****************************************************************************/
+-static inline void
+-ips_putq_copp_head(ips_copp_queue_t * queue, ips_copp_wait_item_t * item)
+-{
+- METHOD_TRACE("ips_putq_copp_head", 1);
+-
+- if (!item)
+- return;
+-
+- item->next = queue->head;
+- queue->head = item;
+-
+- if (!queue->tail)
+- queue->tail = item;
+-
+- queue->count++;
+-}
+-
+-/****************************************************************************/
+-/* */
+ /* Routine Name: ips_putq_copp_tail */
+ /* */
+ /* Routine Description: */
+@@ -3260,7 +3181,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline void
++static void
+ ips_putq_copp_tail(ips_copp_queue_t * queue, ips_copp_wait_item_t * item)
+ {
+ METHOD_TRACE("ips_putq_copp_tail", 1);
+@@ -3292,7 +3213,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline ips_copp_wait_item_t *
++static ips_copp_wait_item_t *
+ ips_removeq_copp_head(ips_copp_queue_t * queue)
+ {
+ ips_copp_wait_item_t *item;
+@@ -3327,7 +3248,7 @@
+ /* ASSUMED to be called from within the HA lock */
+ /* */
+ /****************************************************************************/
+-static inline ips_copp_wait_item_t *
++static ips_copp_wait_item_t *
+ ips_removeq_copp(ips_copp_queue_t * queue, ips_copp_wait_item_t * item)
+ {
+ ips_copp_wait_item_t *p;
+@@ -6946,8 +6867,8 @@
+ {
+ ha->active = 0;
+ ips_free(ha);
+- ips_ha[index] = 0;
+- ips_sh[index] = 0;
++ ips_ha[index] = NULL;
++ ips_sh[index] = NULL;
+ return -1;
+ }
+
+@@ -6996,7 +6917,6 @@
+ for (j = position; j < ips_num_controllers; j++) {
+ switch (ips_ha[j]->ad_type) {
+ case IPS_ADTYPE_SERVERAID6M:
+- case IPS_ADTYPE_SERVERAID7k:
+ case IPS_ADTYPE_SERVERAID7M:
+ if (nvram->adapter_order[i] == 'M') {
+ ips_shift_controllers(position,
+@@ -7017,6 +6937,7 @@
+ case IPS_ADTYPE_SERVERAID6I:
+ case IPS_ADTYPE_SERVERAID5I2:
+ case IPS_ADTYPE_SERVERAID5I1:
++ case IPS_ADTYPE_SERVERAID7k:
+ if (nvram->adapter_order[i] == 'S') {
+ ips_shift_controllers(position,
+ j);
+@@ -7545,6 +7466,13 @@
+ MODULE_LICENSE("GPL");
+ #endif
+
++MODULE_DESCRIPTION("IBM ServeRAID Adapter Driver " IPS_VER_STRING);
++
++#ifdef MODULE_VERSION
++MODULE_VERSION(IPS_VER_STRING);
++#endif
++
++
+ /*
+ * Overrides for Emacs so that we almost follow Linus's tabbing style.
+ * Emacs will notice this stuff at the end of the file and automatically
+diff -Nur linux-2.6.8.1.org/drivers/scsi/ips.h linux-2.6.8.1/drivers/scsi/ips.h
+--- linux-2.6.8.1.org/drivers/scsi/ips.h 2004-08-14 12:54:51.000000000
+0200
++++ linux-2.6.8.1/drivers/scsi/ips.h 2005-03-01 11:34:08.487639000 +0100
+@@ -96,7 +96,11 @@
+ #endif
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+- typedef void irqreturn_t;
++
++ #ifndef irqreturn_t
++ typedef void irqreturn_t;
++ #endif
++
+ #define IRQ_NONE
+ #define IRQ_HANDLED
+ #define IRQ_RETVAL(x)
+@@ -1113,8 +1117,8 @@
+ uint32_t mem_addr; /* Memory mapped address */
+ uint32_t io_len; /* Size of IO Address */
+ uint32_t mem_len; /* Size of memory address */
+- char *mem_ptr; /* Memory mapped Ptr */
+- char *ioremap_ptr; /* ioremapped memory pointer */
++ char *mem_ptr; /* Memory mapped Ptr */
++ char *ioremap_ptr;/* ioremapped memory pointer */
+ ips_hw_func_t func; /* hw function pointers */
+ struct pci_dev *pcidev; /* PCI device handle */
+ char *flash_data; /* Save Area for flash data */
+@@ -1210,13 +1214,13 @@
+
+ #define IPS_VER_MAJOR 7
+ #define IPS_VER_MAJOR_STRING "7"
+-#define IPS_VER_MINOR 00
+-#define IPS_VER_MINOR_STRING "00"
+-#define IPS_VER_BUILD 15
+-#define IPS_VER_BUILD_STRING "15"
+-#define IPS_VER_STRING "7.00.15"
++#define IPS_VER_MINOR 10
++#define IPS_VER_MINOR_STRING "10"
++#define IPS_VER_BUILD 18
++#define IPS_VER_BUILD_STRING "18"
++#define IPS_VER_STRING "7.10.18"
+ #define IPS_RELEASE_ID 0x00020000
+-#define IPS_BUILD_IDENT 625
++#define IPS_BUILD_IDENT 731
+ #define IPS_LEGALCOPYRIGHT_STRING "(C) Copyright IBM Corp. 1994, 2002. All
Rights Reserved."
+ #define IPS_ADAPTECCOPYRIGHT_STRING "(c) Copyright Adaptec, Inc. 2002 to
2004. All Rights Reserved."
+ #define IPS_DELLCOPYRIGHT_STRING "(c) Copyright Dell 2004. All Rights
Reserved."
+@@ -1227,32 +1231,35 @@
+ #define IPS_VER_SERVERAID2 "2.88.13"
+ #define IPS_VER_NAVAJO "2.88.13"
+ #define IPS_VER_SERVERAID3 "6.10.24"
+-#define IPS_VER_SERVERAID4H "7.00.15"
+-#define IPS_VER_SERVERAID4MLx "7.00.15"
+-#define IPS_VER_SARASOTA "7.00.15"
+-#define IPS_VER_MARCO "7.00.15"
+-#define IPS_VER_SEBRING "7.00.15"
++#define IPS_VER_SERVERAID4H "7.10.11"
++#define IPS_VER_SERVERAID4MLx "7.10.18"
++#define IPS_VER_SARASOTA "7.10.18"
++#define IPS_VER_MARCO "7.10.18"
++#define IPS_VER_SEBRING "7.10.18"
++#define IPS_VER_KEYWEST "7.10.18"
+
+ /* Compatability IDs for various adapters */
+ #define IPS_COMPAT_UNKNOWN ""
+-#define IPS_COMPAT_CURRENT "SB610"
++#define IPS_COMPAT_CURRENT "KW710"
+ #define IPS_COMPAT_SERVERAID1 "2.25.01"
+ #define IPS_COMPAT_SERVERAID2 "2.88.13"
+ #define IPS_COMPAT_NAVAJO "2.88.13"
+ #define IPS_COMPAT_KIOWA "2.88.13"
+ #define IPS_COMPAT_SERVERAID3H "SB610"
+ #define IPS_COMPAT_SERVERAID3L "SB610"
+-#define IPS_COMPAT_SERVERAID4H "SB610"
+-#define IPS_COMPAT_SERVERAID4M "SB610"
+-#define IPS_COMPAT_SERVERAID4L "SB610"
+-#define IPS_COMPAT_SERVERAID4Mx "SB610"
+-#define IPS_COMPAT_SERVERAID4Lx "SB610"
+-#define IPS_COMPAT_SARASOTA "SB610"
+-#define IPS_COMPAT_MARCO "SB610"
+-#define IPS_COMPAT_SEBRING "SB610"
+-#define IPS_COMPAT_BIOS "SB610"
++#define IPS_COMPAT_SERVERAID4H "KW710"
++#define IPS_COMPAT_SERVERAID4M "KW710"
++#define IPS_COMPAT_SERVERAID4L "KW710"
++#define IPS_COMPAT_SERVERAID4Mx "KW710"
++#define IPS_COMPAT_SERVERAID4Lx "KW710"
++#define IPS_COMPAT_SARASOTA "KW710"
++#define IPS_COMPAT_MARCO "KW710"
++#define IPS_COMPAT_SEBRING "KW710"
++#define IPS_COMPAT_TAMPA "KW710"
++#define IPS_COMPAT_KEYWEST "KW710"
++#define IPS_COMPAT_BIOS "KW710"
+
+-#define IPS_COMPAT_MAX_ADAPTER_TYPE 16
++#define IPS_COMPAT_MAX_ADAPTER_TYPE 18
+ #define IPS_COMPAT_ID_LENGTH 8
+
+ #define IPS_DEFINE_COMPAT_TABLE(tablename) \
+@@ -1272,7 +1279,9 @@
+ IPS_COMPAT_SARASOTA, /* one-channel variety of SARASOTA */ \
+ IPS_COMPAT_SARASOTA, /* two-channel variety of SARASOTA */ \
+ IPS_COMPAT_MARCO, \
+- IPS_COMPAT_SEBRING \
++ IPS_COMPAT_SEBRING, \
++ IPS_COMPAT_TAMPA, \
++ IPS_COMPAT_KEYWEST \
+ }
+
+
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit