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
pld-cvs-commit@pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to