summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'openvz-sources/022.077/5116_linux-2.6.8.1-ips-7.12.02.patch')
-rw-r--r--openvz-sources/022.077/5116_linux-2.6.8.1-ips-7.12.02.patch602
1 files changed, 0 insertions, 602 deletions
diff --git a/openvz-sources/022.077/5116_linux-2.6.8.1-ips-7.12.02.patch b/openvz-sources/022.077/5116_linux-2.6.8.1-ips-7.12.02.patch
deleted file mode 100644
index 43efc51..0000000
--- a/openvz-sources/022.077/5116_linux-2.6.8.1-ips-7.12.02.patch
+++ /dev/null
@@ -1,602 +0,0 @@
---- ./drivers/scsi/ips.h.ips 2004-08-14 09:36:32.000000000 +0400
-+++ ./drivers/scsi/ips.h 2005-11-18 21:59:08.000000000 +0300
-@@ -53,14 +53,6 @@
- #include <asm/uaccess.h>
- #include <asm/io.h>
-
-- /* Prototypes */
-- extern int ips_detect(Scsi_Host_Template *);
-- extern int ips_release(struct Scsi_Host *);
-- extern int ips_eh_abort(Scsi_Cmnd *);
-- extern int ips_eh_reset(Scsi_Cmnd *);
-- extern int ips_queue(Scsi_Cmnd *, void (*) (Scsi_Cmnd *));
-- extern const char * ips_info(struct Scsi_Host *);
--
- /*
- * Some handy macros
- */
-@@ -95,11 +87,14 @@
- #define scsi_set_pci_device(sh,dev) (0)
- #endif
-
-- #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-+ #ifndef IRQ_NONE
- typedef void irqreturn_t;
- #define IRQ_NONE
- #define IRQ_HANDLED
- #define IRQ_RETVAL(x)
-+ #endif
-+
-+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
- #define IPS_REGISTER_HOSTS(SHT) scsi_register_module(MODULE_SCSI_HA,SHT)
- #define IPS_UNREGISTER_HOSTS(SHT) scsi_unregister_module(MODULE_SCSI_HA,SHT)
- #define IPS_ADD_HOST(shost,device)
-@@ -127,6 +122,10 @@
- #ifndef min
- #define min(x,y) ((x) < (y) ? x : y)
- #endif
-+
-+ #ifndef __iomem /* For clean compiles in earlier kernels without __iomem annotations */
-+ #define __iomem
-+ #endif
-
- #define pci_dma_hi32(a) ((a >> 16) >> 16)
- #define pci_dma_lo32(a) (a & 0xffffffff)
-@@ -453,10 +452,10 @@
- static void ips_select_queue_depth(struct Scsi_Host *, Scsi_Device *);
- static int ips_biosparam(Disk *disk, kdev_t dev, int geom[]);
- #else
-- int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
-+ static int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
- static int ips_biosparam(struct scsi_device *sdev, struct block_device *bdev,
- sector_t capacity, int geom[]);
-- int ips_slave_configure(Scsi_Device *SDptr);
-+ static int ips_slave_configure(Scsi_Device *SDptr);
- #endif
-
- /*
-@@ -1113,8 +1112,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 __iomem *mem_ptr; /* Memory mapped Ptr */
-+ char __iomem *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 +1209,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 12
-+#define IPS_VER_MINOR_STRING "12"
-+#define IPS_VER_BUILD 02
-+#define IPS_VER_BUILD_STRING "02"
-+#define IPS_VER_STRING "7.12.02"
- #define IPS_RELEASE_ID 0x00020000
--#define IPS_BUILD_IDENT 625
-+#define IPS_BUILD_IDENT 761
- #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 +1226,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.12.02"
-+#define IPS_VER_SERVERAID4MLx "7.12.02"
-+#define IPS_VER_SARASOTA "7.12.02"
-+#define IPS_VER_MARCO "7.12.02"
-+#define IPS_VER_SEBRING "7.12.02"
-+#define IPS_VER_KEYWEST "7.12.02"
-
- /* 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 +1274,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 \
- }
-
-
---- ./drivers/scsi/ips.c.ips 2004-08-14 09:36:11.000000000 +0400
-+++ ./drivers/scsi/ips.c 2005-11-18 22:01:46.000000000 +0300
-@@ -133,6 +133,12 @@
- /* 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.18 - 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 */
-+/* 7.10.xx - Use STATIC functions whereever possible */
-+/* - Clean up deprecated MODULE_PARM calls */
- /*****************************************************************************/
-
- /*
-@@ -176,7 +182,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 +203,21 @@
-
- #ifdef MODULE
- static char *ips = NULL;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,25)
- MODULE_PARM(ips, "s");
-+#else
-+#include <linux/moduleparam.h>
-+#define MAX_BOOT_OPTIONS_SIZE 256
-+static char boot_options[MAX_BOOT_OPTIONS_SIZE];
-+module_param_string(ips, boot_options, MAX_BOOT_OPTIONS_SIZE, 0);
-+#endif
- #endif
-
- /*
- * DRIVER_VER
- */
--#define IPS_VERSION_HIGH "7.00"
--#define IPS_VERSION_LOW ".15 "
-+#define IPS_VERSION_HIGH "7.12"
-+#define IPS_VERSION_LOW ".02 "
-
- #if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
- #warning "This driver has only been tested on the x86/ia64/x86_64 platforms"
-@@ -236,6 +255,121 @@
- #endif
-
- /*
-+ * Function prototypes
-+ */
-+static int ips_detect(Scsi_Host_Template *);
-+static int ips_release(struct Scsi_Host *);
-+int ips_eh_abort(Scsi_Cmnd *);
-+static int ips_eh_reset(Scsi_Cmnd *);
-+static int ips_queue(Scsi_Cmnd *, void (*)(Scsi_Cmnd *));
-+static const char *ips_info(struct Scsi_Host *);
-+static irqreturn_t do_ipsintr(int, void *, struct pt_regs *);
-+static int ips_hainit(ips_ha_t *);
-+static int ips_map_status(ips_ha_t *, ips_scb_t *, ips_stat_t *);
-+static int ips_send_wait(ips_ha_t *, ips_scb_t *, int, int);
-+static int ips_send_cmd(ips_ha_t *, ips_scb_t *);
-+static int ips_online(ips_ha_t *, ips_scb_t *);
-+static int ips_inquiry(ips_ha_t *, ips_scb_t *);
-+static int ips_rdcap(ips_ha_t *, ips_scb_t *);
-+static int ips_msense(ips_ha_t *, ips_scb_t *);
-+static int ips_reqsen(ips_ha_t *, ips_scb_t *);
-+static int ips_deallocatescbs(ips_ha_t *, int);
-+static int ips_allocatescbs(ips_ha_t *);
-+static int ips_reset_copperhead(ips_ha_t *);
-+static int ips_reset_copperhead_memio(ips_ha_t *);
-+static int ips_reset_morpheus(ips_ha_t *);
-+static int ips_issue_copperhead(ips_ha_t *, ips_scb_t *);
-+static int ips_issue_copperhead_memio(ips_ha_t *, ips_scb_t *);
-+static int ips_issue_i2o(ips_ha_t *, ips_scb_t *);
-+static int ips_issue_i2o_memio(ips_ha_t *, ips_scb_t *);
-+static int ips_isintr_copperhead(ips_ha_t *);
-+static int ips_isintr_copperhead_memio(ips_ha_t *);
-+static int ips_isintr_morpheus(ips_ha_t *);
-+static int ips_wait(ips_ha_t *, int, int);
-+static int ips_write_driver_status(ips_ha_t *, int);
-+static int ips_read_adapter_status(ips_ha_t *, int);
-+static int ips_read_subsystem_parameters(ips_ha_t *, int);
-+static int ips_read_config(ips_ha_t *, int);
-+static int ips_clear_adapter(ips_ha_t *, int);
-+static int ips_readwrite_page5(ips_ha_t *, int, int);
-+static int ips_init_copperhead(ips_ha_t *);
-+static int ips_init_copperhead_memio(ips_ha_t *);
-+static int ips_init_morpheus(ips_ha_t *);
-+static int ips_isinit_copperhead(ips_ha_t *);
-+static int ips_isinit_copperhead_memio(ips_ha_t *);
-+static int ips_isinit_morpheus(ips_ha_t *);
-+static int ips_erase_bios(ips_ha_t *);
-+static int ips_program_bios(ips_ha_t *, char *, uint32_t, uint32_t);
-+static int ips_verify_bios(ips_ha_t *, char *, uint32_t, uint32_t);
-+static int ips_erase_bios_memio(ips_ha_t *);
-+static int ips_program_bios_memio(ips_ha_t *, char *, uint32_t, uint32_t);
-+static int ips_verify_bios_memio(ips_ha_t *, char *, uint32_t, uint32_t);
-+static int ips_flash_copperhead(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
-+static int ips_flash_bios(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
-+static int ips_flash_firmware(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
-+static void ips_free_flash_copperhead(ips_ha_t * ha);
-+static void ips_get_bios_version(ips_ha_t *, int);
-+static void ips_identify_controller(ips_ha_t *);
-+static void ips_chkstatus(ips_ha_t *, IPS_STATUS *);
-+static void ips_enable_int_copperhead(ips_ha_t *);
-+static void ips_enable_int_copperhead_memio(ips_ha_t *);
-+static void ips_enable_int_morpheus(ips_ha_t *);
-+static int ips_intr_copperhead(ips_ha_t *);
-+static int ips_intr_morpheus(ips_ha_t *);
-+static void ips_next(ips_ha_t *, int);
-+static void ipsintr_blocking(ips_ha_t *, struct ips_scb *);
-+static void ipsintr_done(ips_ha_t *, struct ips_scb *);
-+static void ips_done(ips_ha_t *, ips_scb_t *);
-+static void ips_free(ips_ha_t *);
-+static void ips_init_scb(ips_ha_t *, ips_scb_t *);
-+static void ips_freescb(ips_ha_t *, ips_scb_t *);
-+static void ips_setup_funclist(ips_ha_t *);
-+static void ips_statinit(ips_ha_t *);
-+static void ips_statinit_memio(ips_ha_t *);
-+static void ips_fix_ffdc_time(ips_ha_t *, ips_scb_t *, time_t);
-+static void ips_ffdc_reset(ips_ha_t *, int);
-+static void ips_ffdc_time(ips_ha_t *);
-+static uint32_t ips_statupd_copperhead(ips_ha_t *);
-+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 *,
-+ 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 *,
-+ ips_copp_wait_item_t *);
-+static inline 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);
-+static int ips_usrcmd(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
-+static void ips_cleanup_passthru(ips_ha_t *, ips_scb_t *);
-+static void ips_scmd_buf_write(Scsi_Cmnd * scmd, void *data,
-+ unsigned int count);
-+static void ips_scmd_buf_read(Scsi_Cmnd * scmd, void *data, unsigned int count);
-+
-+static int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
-+static int ips_host_info(ips_ha_t *, char *, off_t, int);
-+static void copy_mem_info(IPS_INFOSTR *, char *, int);
-+static int copy_info(IPS_INFOSTR *, char *, ...);
-+static int ips_get_version_info(ips_ha_t * ha, dma_addr_t, int intr);
-+static void ips_version_check(ips_ha_t * ha, int intr);
-+static int ips_abort_init(ips_ha_t * ha, int index);
-+static int ips_init_phase2(int index);
-+
-+static int ips_init_phase1(struct pci_dev *pci_dev, int *indexPtr);
-+static int ips_register_scsi(int index);
-+
-+/*
- * global variables
- */
- static const char ips_name[] = "ips";
-@@ -278,9 +412,12 @@
- #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 */
-+static IPS_DEFINE_COMPAT_TABLE( Compatable ); /* Version Compatability Table */
-
-
- /* This table describes all ServeRAID Adapters */
-@@ -298,7 +435,7 @@
- static int __devinit ips_insert_device(struct pci_dev *pci_dev, const struct pci_device_id *ent);
- static void __devexit ips_remove_device(struct pci_dev *pci_dev);
-
--struct pci_driver ips_pci_driver = {
-+static struct pci_driver ips_pci_driver = {
- .name = ips_hot_plug_name,
- .id_table = ips_pci_table,
- .probe = ips_insert_device,
-@@ -395,123 +532,6 @@
- IPS_DATA_UNK, IPS_DATA_UNK, IPS_DATA_UNK, IPS_DATA_UNK, IPS_DATA_UNK
- };
-
--/*
-- * Function prototypes
-- */
--int ips_detect(Scsi_Host_Template *);
--int ips_release(struct Scsi_Host *);
--int ips_eh_abort(Scsi_Cmnd *);
--int ips_eh_reset(Scsi_Cmnd *);
--int ips_queue(Scsi_Cmnd *, void (*)(Scsi_Cmnd *));
--const char *ips_info(struct Scsi_Host *);
--irqreturn_t do_ipsintr(int, void *, struct pt_regs *);
--static int ips_hainit(ips_ha_t *);
--static int ips_map_status(ips_ha_t *, ips_scb_t *, ips_stat_t *);
--static int ips_send_wait(ips_ha_t *, ips_scb_t *, int, int);
--static int ips_send_cmd(ips_ha_t *, ips_scb_t *);
--static int ips_online(ips_ha_t *, ips_scb_t *);
--static int ips_inquiry(ips_ha_t *, ips_scb_t *);
--static int ips_rdcap(ips_ha_t *, ips_scb_t *);
--static int ips_msense(ips_ha_t *, ips_scb_t *);
--static int ips_reqsen(ips_ha_t *, ips_scb_t *);
--static int ips_deallocatescbs(ips_ha_t *, int);
--static int ips_allocatescbs(ips_ha_t *);
--static int ips_reset_copperhead(ips_ha_t *);
--static int ips_reset_copperhead_memio(ips_ha_t *);
--static int ips_reset_morpheus(ips_ha_t *);
--static int ips_issue_copperhead(ips_ha_t *, ips_scb_t *);
--static int ips_issue_copperhead_memio(ips_ha_t *, ips_scb_t *);
--static int ips_issue_i2o(ips_ha_t *, ips_scb_t *);
--static int ips_issue_i2o_memio(ips_ha_t *, ips_scb_t *);
--static int ips_isintr_copperhead(ips_ha_t *);
--static int ips_isintr_copperhead_memio(ips_ha_t *);
--static int ips_isintr_morpheus(ips_ha_t *);
--static int ips_wait(ips_ha_t *, int, int);
--static int ips_write_driver_status(ips_ha_t *, int);
--static int ips_read_adapter_status(ips_ha_t *, int);
--static int ips_read_subsystem_parameters(ips_ha_t *, int);
--static int ips_read_config(ips_ha_t *, int);
--static int ips_clear_adapter(ips_ha_t *, int);
--static int ips_readwrite_page5(ips_ha_t *, int, int);
--static int ips_init_copperhead(ips_ha_t *);
--static int ips_init_copperhead_memio(ips_ha_t *);
--static int ips_init_morpheus(ips_ha_t *);
--static int ips_isinit_copperhead(ips_ha_t *);
--static int ips_isinit_copperhead_memio(ips_ha_t *);
--static int ips_isinit_morpheus(ips_ha_t *);
--static int ips_erase_bios(ips_ha_t *);
--static int ips_program_bios(ips_ha_t *, char *, uint32_t, uint32_t);
--static int ips_verify_bios(ips_ha_t *, char *, uint32_t, uint32_t);
--static int ips_erase_bios_memio(ips_ha_t *);
--static int ips_program_bios_memio(ips_ha_t *, char *, uint32_t, uint32_t);
--static int ips_verify_bios_memio(ips_ha_t *, char *, uint32_t, uint32_t);
--static int ips_flash_copperhead(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
--static int ips_flash_bios(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
--static int ips_flash_firmware(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
--static void ips_free_flash_copperhead(ips_ha_t * ha);
--static void ips_get_bios_version(ips_ha_t *, int);
--static void ips_identify_controller(ips_ha_t *);
--static void ips_chkstatus(ips_ha_t *, IPS_STATUS *);
--static void ips_enable_int_copperhead(ips_ha_t *);
--static void ips_enable_int_copperhead_memio(ips_ha_t *);
--static void ips_enable_int_morpheus(ips_ha_t *);
--static int ips_intr_copperhead(ips_ha_t *);
--static int ips_intr_morpheus(ips_ha_t *);
--static void ips_next(ips_ha_t *, int);
--static void ipsintr_blocking(ips_ha_t *, struct ips_scb *);
--static void ipsintr_done(ips_ha_t *, struct ips_scb *);
--static void ips_done(ips_ha_t *, ips_scb_t *);
--static void ips_free(ips_ha_t *);
--static void ips_init_scb(ips_ha_t *, ips_scb_t *);
--static void ips_freescb(ips_ha_t *, ips_scb_t *);
--static void ips_setup_funclist(ips_ha_t *);
--static void ips_statinit(ips_ha_t *);
--static void ips_statinit_memio(ips_ha_t *);
--static void ips_fix_ffdc_time(ips_ha_t *, ips_scb_t *, time_t);
--static void ips_ffdc_reset(ips_ha_t *, int);
--static void ips_ffdc_time(ips_ha_t *);
--static uint32_t ips_statupd_copperhead(ips_ha_t *);
--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 *,
-- 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 *,
-- ips_copp_wait_item_t *);
--static inline 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);
--static int ips_usrcmd(ips_ha_t *, ips_passthru_t *, ips_scb_t *);
--static void ips_cleanup_passthru(ips_ha_t *, ips_scb_t *);
--static void ips_scmd_buf_write(Scsi_Cmnd * scmd, void *data,
-- unsigned int count);
--static void ips_scmd_buf_read(Scsi_Cmnd * scmd, void *data, unsigned int count);
--
--int ips_proc_info(struct Scsi_Host *, char *, char **, off_t, int, int);
--static int ips_host_info(ips_ha_t *, char *, off_t, int);
--static void copy_mem_info(IPS_INFOSTR *, char *, int);
--static int copy_info(IPS_INFOSTR *, char *, ...);
--static int ips_get_version_info(ips_ha_t * ha, dma_addr_t, int intr);
--static void ips_version_check(ips_ha_t * ha, int intr);
--static int ips_abort_init(ips_ha_t * ha, int index);
--static int ips_init_phase2(int index);
--
--static int ips_init_phase1(struct pci_dev *pci_dev, int *indexPtr);
--static int ips_register_scsi(int index);
--/*--------------------------------------------------------------------------*/
--/* Exported Functions */
--/*--------------------------------------------------------------------------*/
-
- /****************************************************************************/
- /* */
-@@ -580,7 +600,7 @@
- /* NOTE: this routine is called under the io_request_lock spinlock */
- /* */
- /****************************************************************************/
--int
-+static int
- ips_detect(Scsi_Host_Template * SHT)
- {
- int i;
-@@ -588,8 +608,11 @@
- METHOD_TRACE("ips_detect", 1);
-
- #ifdef MODULE
-- if (ips)
-- ips_setup(ips);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,25)
-+ ips = boot_options;
-+#endif
-+ if (ips)
-+ ips_setup(ips);
- #endif
-
- for (i = 0; i < ips_num_controllers; i++) {
-@@ -669,7 +692,7 @@
- /* Remove a driver */
- /* */
- /****************************************************************************/
--int
-+static int
- ips_release(struct Scsi_Host *sh)
- {
- ips_scb_t *scb;
-@@ -865,7 +888,7 @@
- /* NOTE: this routine is called under the io_request_lock spinlock */
- /* */
- /****************************************************************************/
--int
-+static int
- ips_eh_reset(Scsi_Cmnd * SC)
- {
- int ret;
-@@ -1065,7 +1088,7 @@
- /* Linux obtains io_request_lock before calling this function */
- /* */
- /****************************************************************************/
--int
-+static int
- ips_queue(Scsi_Cmnd * SC, void (*done) (Scsi_Cmnd *))
- {
- ips_ha_t *ha;
-@@ -1288,7 +1311,7 @@
- /* Set queue depths on devices once scan is complete */
- /* */
- /****************************************************************************/
--int
-+static int
- ips_slave_configure(Scsi_Device * SDptr)
- {
- ips_ha_t *ha;
-@@ -1314,7 +1337,7 @@
- /* Wrapper for the interrupt handler */
- /* */
- /****************************************************************************/
--irqreturn_t
-+static irqreturn_t
- do_ipsintr(int irq, void *dev_id, struct pt_regs * regs)
- {
- ips_ha_t *ha;
-@@ -1493,7 +1516,7 @@
- /* Return info about the driver */
- /* */
- /****************************************************************************/
--const char *
-+static const char *
- ips_info(struct Scsi_Host *SH)
- {
- static char buffer[256];
-@@ -1531,7 +1554,7 @@
- /* The passthru interface for the driver */
- /* */
- /****************************************************************************/
--int
-+static int
- ips_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset,
- int length, int func)
- {
-@@ -6996,7 +7019,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 +7039,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);
-@@ -7254,8 +7277,8 @@
- int j;
- int index;
- dma_addr_t dma_address;
-- char *ioremap_ptr;
-- char *mem_ptr;
-+ char __iomem *ioremap_ptr;
-+ char __iomem *mem_ptr;
- uint32_t IsDead;
-
- METHOD_TRACE("ips_init_phase1", 1);
-@@ -7545,6 +7568,15 @@
- MODULE_LICENSE("GPL");
- #endif
-
-+#ifdef MODULE_DESCRIPTION
-+MODULE_DESCRIPTION("IBM ServeRAID Adapter Driver " IPS_VER_STRING);
-+#endif
-+
-+#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