From: "Moore, Eric Dean" Signed-off-by: Andrew Morton --- drivers/message/fusion/Makefile | 4 ++-- drivers/message/fusion/mptbase.c | 17 +++++------------ drivers/message/fusion/mptbase.h | 4 ++-- drivers/message/fusion/mptfc.c | 7 +++---- drivers/message/fusion/mptspi.c | 7 +++---- 5 files changed, 15 insertions(+), 24 deletions(-) diff -puN drivers/message/fusion/Makefile~mptfusion-fix-panic-loading-driver-statically-com drivers/message/fusion/Makefile --- 25/drivers/message/fusion/Makefile~mptfusion-fix-panic-loading-driver-statically-com Thu Apr 28 16:34:28 2005 +++ 25-akpm/drivers/message/fusion/Makefile Thu Apr 28 16:34:28 2005 @@ -32,7 +32,7 @@ #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC -obj-$(CONFIG_FUSION_SPI) += mptspi.o mptscsih.o mptbase.o -obj-$(CONFIG_FUSION_FC) += mptfc.o mptscsih.o mptbase.o +obj-$(CONFIG_FUSION_SPI) += mptbase.o mptscsih.o mptspi.o +obj-$(CONFIG_FUSION_FC) += mptbase.o mptscsih.o mptfc.o obj-$(CONFIG_FUSION_CTL) += mptctl.o obj-$(CONFIG_FUSION_LAN) += mptlan.o diff -puN drivers/message/fusion/mptbase.c~mptfusion-fix-panic-loading-driver-statically-com drivers/message/fusion/mptbase.c --- 25/drivers/message/fusion/mptbase.c~mptfusion-fix-panic-loading-driver-statically-com Thu Apr 28 16:34:28 2005 +++ 25-akpm/drivers/message/fusion/mptbase.c Thu Apr 28 16:34:28 2005 @@ -360,15 +360,8 @@ mpt_interrupt(int irq, void *bus_id, str } if (freeme) { - unsigned long flags; - /* Put Request back on FreeQ! */ - spin_lock_irqsave(&ioc->FreeQlock, flags); - list_add_tail(&mf->u.frame.linkage.list, &ioc->FreeQ); -#ifdef MFCNT - ioc->mfcnt--; -#endif - spin_unlock_irqrestore(&ioc->FreeQlock, flags); + mpt_free_msg_frame(ioc, mf); } mb(); @@ -735,8 +728,8 @@ mpt_get_msg_frame(int handle, MPT_ADAPTE mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */ req_offset = (u8 *)mf - (u8 *)ioc->req_frames; /* u16! */ - req_idx = cpu_to_le16(req_offset / ioc->req_sz); - mf->u.frame.hwhdr.msgctxu.fld.req_idx = req_idx; + req_idx = req_offset / ioc->req_sz; + mf->u.frame.hwhdr.msgctxu.fld.req_idx = cpu_to_le16(req_idx); mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0; ioc->RequestNB[req_idx] = ioc->NB_for_64_byte_frame; /* Default, will be changed if necessary in SG generation */ #ifdef MFCNT @@ -782,8 +775,8 @@ mpt_put_msg_frame(int handle, MPT_ADAPTE mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */ req_offset = (u8 *)mf - (u8 *)ioc->req_frames; /* u16! */ - req_idx = cpu_to_le16(req_offset / ioc->req_sz); - mf->u.frame.hwhdr.msgctxu.fld.req_idx = req_idx; + req_idx = req_offset / ioc->req_sz; + mf->u.frame.hwhdr.msgctxu.fld.req_idx = cpu_to_le16(req_idx); mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0; #ifdef MPT_DEBUG_MSG_FRAME diff -puN drivers/message/fusion/mptbase.h~mptfusion-fix-panic-loading-driver-statically-com drivers/message/fusion/mptbase.h --- 25/drivers/message/fusion/mptbase.h~mptfusion-fix-panic-loading-driver-statically-com Thu Apr 28 16:34:28 2005 +++ 25-akpm/drivers/message/fusion/mptbase.h Thu Apr 28 16:34:28 2005 @@ -76,8 +76,8 @@ #define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR #endif -#define MPT_LINUX_VERSION_COMMON "3.03.00" -#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.00" +#define MPT_LINUX_VERSION_COMMON "3.03.01" +#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.01" #define WHAT_MAGIC_STRING "@" "(" "#" ")" #define show_mptmod_ver(s,ver) \ diff -puN drivers/message/fusion/mptfc.c~mptfusion-fix-panic-loading-driver-statically-com drivers/message/fusion/mptfc.c --- 25/drivers/message/fusion/mptfc.c~mptfusion-fix-panic-loading-driver-statically-com Thu Apr 28 16:34:28 2005 +++ 25-akpm/drivers/message/fusion/mptfc.c Thu Apr 28 16:34:28 2005 @@ -166,6 +166,9 @@ mptfc_probe(struct pci_dev *pdev, const return r; ioc = pci_get_drvdata(pdev); + ioc->DoneCtx = mptfcDoneCtx; + ioc->TaskCtx = mptfcTaskCtx; + ioc->InternalCtx = mptfcInternalCtx; /* Added sanity check on readiness of the MPT adapter. */ @@ -325,10 +328,6 @@ mptfc_probe(struct pci_dev *pdev, const hd->timer.data = (unsigned long) hd; hd->timer.function = mptscsih_timer_expired; - ioc->DoneCtx = mptfcDoneCtx; - ioc->TaskCtx = mptfcTaskCtx; - ioc->InternalCtx = mptfcInternalCtx; - hd->mpt_pq_filter = mpt_pq_filter; ddvprintk((MYIOC_s_INFO_FMT diff -puN drivers/message/fusion/mptspi.c~mptfusion-fix-panic-loading-driver-statically-com drivers/message/fusion/mptspi.c --- 25/drivers/message/fusion/mptspi.c~mptfusion-fix-panic-loading-driver-statically-com Thu Apr 28 16:34:28 2005 +++ 25-akpm/drivers/message/fusion/mptspi.c Thu Apr 28 16:34:28 2005 @@ -180,6 +180,9 @@ mptspi_probe(struct pci_dev *pdev, const return r; ioc = pci_get_drvdata(pdev); + ioc->DoneCtx = mptspiDoneCtx; + ioc->TaskCtx = mptspiTaskCtx; + ioc->InternalCtx = mptspiInternalCtx; /* Added sanity check on readiness of the MPT adapter. */ @@ -395,10 +398,6 @@ mptspi_probe(struct pci_dev *pdev, const hd->scandv_wait_done = 0; hd->last_queue_full = 0; - ioc->DoneCtx = mptspiDoneCtx; - ioc->TaskCtx = mptspiTaskCtx; - ioc->InternalCtx = mptspiInternalCtx; - error = scsi_add_host (sh, &ioc->pcidev->dev); if(error) { dprintk((KERN_ERR MYNAM _