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