diff options
author | Moore, Eric Dean <Eric.Moore@lsil.com> | 2005-04-30 18:09:38 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-05-20 13:53:42 -0400 |
commit | d335cc38c75e28407455463444b912b09c92daec (patch) | |
tree | 031810afee4004df4797a641d9d02fe3955a3b9b /drivers/message/fusion | |
parent | 4e33bd874bce8b3df2ab52538db59730196383c3 (diff) |
[SCSI] mptfusion: fix panic loading driver statically compiled
Adjust link ordering in the Makefile. Also, the ioc->DoneCtx handles
for mptspi/mptfc in the message frame. And I'm now not seeing the
panic.
Signed-off-by: Eric Moore <Eric.Moore@lsil.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/message/fusion')
-rw-r--r-- | drivers/message/fusion/Makefile | 4 | ||||
-rw-r--r-- | drivers/message/fusion/mptbase.c | 17 | ||||
-rw-r--r-- | drivers/message/fusion/mptbase.h | 4 | ||||
-rw-r--r-- | drivers/message/fusion/mptfc.c | 7 | ||||
-rw-r--r-- | drivers/message/fusion/mptspi.c | 7 |
5 files changed, 15 insertions, 24 deletions
diff --git a/drivers/message/fusion/Makefile b/drivers/message/fusion/Makefile index 1c99e355a33f..1d2f9db813c1 100644 --- a/drivers/message/fusion/Makefile +++ b/drivers/message/fusion/Makefile | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC | 33 | #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC |
34 | 34 | ||
35 | obj-$(CONFIG_FUSION_SPI) += mptspi.o mptscsih.o mptbase.o | 35 | obj-$(CONFIG_FUSION_SPI) += mptbase.o mptscsih.o mptspi.o |
36 | obj-$(CONFIG_FUSION_FC) += mptfc.o mptscsih.o mptbase.o | 36 | obj-$(CONFIG_FUSION_FC) += mptbase.o mptscsih.o mptfc.o |
37 | obj-$(CONFIG_FUSION_CTL) += mptctl.o | 37 | obj-$(CONFIG_FUSION_CTL) += mptctl.o |
38 | obj-$(CONFIG_FUSION_LAN) += mptlan.o | 38 | obj-$(CONFIG_FUSION_LAN) += mptlan.o |
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c index 42ed5e272dca..d2a3c086a995 100644 --- a/drivers/message/fusion/mptbase.c +++ b/drivers/message/fusion/mptbase.c | |||
@@ -360,15 +360,8 @@ mpt_interrupt(int irq, void *bus_id, struct pt_regs *r) | |||
360 | } | 360 | } |
361 | 361 | ||
362 | if (freeme) { | 362 | if (freeme) { |
363 | unsigned long flags; | ||
364 | |||
365 | /* Put Request back on FreeQ! */ | 363 | /* Put Request back on FreeQ! */ |
366 | spin_lock_irqsave(&ioc->FreeQlock, flags); | 364 | mpt_free_msg_frame(ioc, mf); |
367 | list_add_tail(&mf->u.frame.linkage.list, &ioc->FreeQ); | ||
368 | #ifdef MFCNT | ||
369 | ioc->mfcnt--; | ||
370 | #endif | ||
371 | spin_unlock_irqrestore(&ioc->FreeQlock, flags); | ||
372 | } | 365 | } |
373 | 366 | ||
374 | mb(); | 367 | mb(); |
@@ -735,8 +728,8 @@ mpt_get_msg_frame(int handle, MPT_ADAPTER *ioc) | |||
735 | mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */ | 728 | mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */ |
736 | req_offset = (u8 *)mf - (u8 *)ioc->req_frames; | 729 | req_offset = (u8 *)mf - (u8 *)ioc->req_frames; |
737 | /* u16! */ | 730 | /* u16! */ |
738 | req_idx = cpu_to_le16(req_offset / ioc->req_sz); | 731 | req_idx = req_offset / ioc->req_sz; |
739 | mf->u.frame.hwhdr.msgctxu.fld.req_idx = req_idx; | 732 | mf->u.frame.hwhdr.msgctxu.fld.req_idx = cpu_to_le16(req_idx); |
740 | mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0; | 733 | mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0; |
741 | ioc->RequestNB[req_idx] = ioc->NB_for_64_byte_frame; /* Default, will be changed if necessary in SG generation */ | 734 | ioc->RequestNB[req_idx] = ioc->NB_for_64_byte_frame; /* Default, will be changed if necessary in SG generation */ |
742 | #ifdef MFCNT | 735 | #ifdef MFCNT |
@@ -782,8 +775,8 @@ mpt_put_msg_frame(int handle, MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf) | |||
782 | mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */ | 775 | mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */ |
783 | req_offset = (u8 *)mf - (u8 *)ioc->req_frames; | 776 | req_offset = (u8 *)mf - (u8 *)ioc->req_frames; |
784 | /* u16! */ | 777 | /* u16! */ |
785 | req_idx = cpu_to_le16(req_offset / ioc->req_sz); | 778 | req_idx = req_offset / ioc->req_sz; |
786 | mf->u.frame.hwhdr.msgctxu.fld.req_idx = req_idx; | 779 | mf->u.frame.hwhdr.msgctxu.fld.req_idx = cpu_to_le16(req_idx); |
787 | mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0; | 780 | mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0; |
788 | 781 | ||
789 | #ifdef MPT_DEBUG_MSG_FRAME | 782 | #ifdef MPT_DEBUG_MSG_FRAME |
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h index b338a154f78f..2c4bb69fc80a 100644 --- a/drivers/message/fusion/mptbase.h +++ b/drivers/message/fusion/mptbase.h | |||
@@ -76,8 +76,8 @@ | |||
76 | #define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR | 76 | #define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | #define MPT_LINUX_VERSION_COMMON "3.03.00" | 79 | #define MPT_LINUX_VERSION_COMMON "3.03.01" |
80 | #define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.00" | 80 | #define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.01" |
81 | #define WHAT_MAGIC_STRING "@" "(" "#" ")" | 81 | #define WHAT_MAGIC_STRING "@" "(" "#" ")" |
82 | 82 | ||
83 | #define show_mptmod_ver(s,ver) \ | 83 | #define show_mptmod_ver(s,ver) \ |
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c index 91c79e525d3c..11845faeede5 100644 --- a/drivers/message/fusion/mptfc.c +++ b/drivers/message/fusion/mptfc.c | |||
@@ -166,6 +166,9 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
166 | return r; | 166 | return r; |
167 | 167 | ||
168 | ioc = pci_get_drvdata(pdev); | 168 | ioc = pci_get_drvdata(pdev); |
169 | ioc->DoneCtx = mptfcDoneCtx; | ||
170 | ioc->TaskCtx = mptfcTaskCtx; | ||
171 | ioc->InternalCtx = mptfcInternalCtx; | ||
169 | 172 | ||
170 | /* Added sanity check on readiness of the MPT adapter. | 173 | /* Added sanity check on readiness of the MPT adapter. |
171 | */ | 174 | */ |
@@ -325,10 +328,6 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
325 | hd->timer.data = (unsigned long) hd; | 328 | hd->timer.data = (unsigned long) hd; |
326 | hd->timer.function = mptscsih_timer_expired; | 329 | hd->timer.function = mptscsih_timer_expired; |
327 | 330 | ||
328 | ioc->DoneCtx = mptfcDoneCtx; | ||
329 | ioc->TaskCtx = mptfcTaskCtx; | ||
330 | ioc->InternalCtx = mptfcInternalCtx; | ||
331 | |||
332 | hd->mpt_pq_filter = mpt_pq_filter; | 331 | hd->mpt_pq_filter = mpt_pq_filter; |
333 | 332 | ||
334 | ddvprintk((MYIOC_s_INFO_FMT | 333 | ddvprintk((MYIOC_s_INFO_FMT |
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c index a4e3c96524e7..5f9a61b85b3b 100644 --- a/drivers/message/fusion/mptspi.c +++ b/drivers/message/fusion/mptspi.c | |||
@@ -180,6 +180,9 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
180 | return r; | 180 | return r; |
181 | 181 | ||
182 | ioc = pci_get_drvdata(pdev); | 182 | ioc = pci_get_drvdata(pdev); |
183 | ioc->DoneCtx = mptspiDoneCtx; | ||
184 | ioc->TaskCtx = mptspiTaskCtx; | ||
185 | ioc->InternalCtx = mptspiInternalCtx; | ||
183 | 186 | ||
184 | /* Added sanity check on readiness of the MPT adapter. | 187 | /* Added sanity check on readiness of the MPT adapter. |
185 | */ | 188 | */ |
@@ -395,10 +398,6 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
395 | hd->scandv_wait_done = 0; | 398 | hd->scandv_wait_done = 0; |
396 | hd->last_queue_full = 0; | 399 | hd->last_queue_full = 0; |
397 | 400 | ||
398 | ioc->DoneCtx = mptspiDoneCtx; | ||
399 | ioc->TaskCtx = mptspiTaskCtx; | ||
400 | ioc->InternalCtx = mptspiInternalCtx; | ||
401 | |||
402 | error = scsi_add_host (sh, &ioc->pcidev->dev); | 401 | error = scsi_add_host (sh, &ioc->pcidev->dev); |
403 | if(error) { | 402 | if(error) { |
404 | dprintk((KERN_ERR MYNAM | 403 | dprintk((KERN_ERR MYNAM |