aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/message/fusion/mptbase.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-06-24 08:41:41 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-06-24 13:07:53 -0400
commit816724e65c72a90a44fbad0ef0b59b186c85fa90 (patch)
tree421fa29aedff988e392f92780637553e275d37a0 /drivers/message/fusion/mptbase.c
parent70ac4385a13f78bc478f26d317511893741b05bd (diff)
parentd384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff)
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
Conflicts: fs/nfs/inode.c fs/super.c Fix conflicts between patch 'NFS: Split fs/nfs/inode.c' and patch 'VFS: Permit filesystem to override root dentry on mount'
Diffstat (limited to 'drivers/message/fusion/mptbase.c')
-rw-r--r--drivers/message/fusion/mptbase.c225
1 files changed, 53 insertions, 172 deletions
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index a30084076ac8..12dd8d493ee2 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -63,9 +63,6 @@
63#ifdef CONFIG_MTRR 63#ifdef CONFIG_MTRR
64#include <asm/mtrr.h> 64#include <asm/mtrr.h>
65#endif 65#endif
66#ifdef __sparc__
67#include <asm/irq.h> /* needed for __irq_itoa() proto */
68#endif
69 66
70#include "mptbase.h" 67#include "mptbase.h"
71 68
@@ -1188,7 +1185,6 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1188 ioc->pcidev = pdev; 1185 ioc->pcidev = pdev;
1189 ioc->diagPending = 0; 1186 ioc->diagPending = 0;
1190 spin_lock_init(&ioc->diagLock); 1187 spin_lock_init(&ioc->diagLock);
1191 spin_lock_init(&ioc->fc_rescan_work_lock);
1192 spin_lock_init(&ioc->initializing_hba_lock); 1188 spin_lock_init(&ioc->initializing_hba_lock);
1193 1189
1194 /* Initialize the event logging. 1190 /* Initialize the event logging.
@@ -1386,39 +1382,6 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1386 /* Set lookup ptr. */ 1382 /* Set lookup ptr. */
1387 list_add_tail(&ioc->list, &ioc_list); 1383 list_add_tail(&ioc->list, &ioc_list);
1388 1384
1389 ioc->pci_irq = -1;
1390 if (pdev->irq) {
1391 if (mpt_msi_enable && !pci_enable_msi(pdev))
1392 printk(MYIOC_s_INFO_FMT "PCI-MSI enabled\n", ioc->name);
1393
1394 r = request_irq(pdev->irq, mpt_interrupt, SA_SHIRQ, ioc->name, ioc);
1395
1396 if (r < 0) {
1397#ifndef __sparc__
1398 printk(MYIOC_s_ERR_FMT "Unable to allocate interrupt %d!\n",
1399 ioc->name, pdev->irq);
1400#else
1401 printk(MYIOC_s_ERR_FMT "Unable to allocate interrupt %s!\n",
1402 ioc->name, __irq_itoa(pdev->irq));
1403#endif
1404 list_del(&ioc->list);
1405 iounmap(mem);
1406 kfree(ioc);
1407 return -EBUSY;
1408 }
1409
1410 ioc->pci_irq = pdev->irq;
1411
1412 pci_set_master(pdev); /* ?? */
1413 pci_set_drvdata(pdev, ioc);
1414
1415#ifndef __sparc__
1416 dprintk((KERN_INFO MYNAM ": %s installed at interrupt %d\n", ioc->name, pdev->irq));
1417#else
1418 dprintk((KERN_INFO MYNAM ": %s installed at interrupt %s\n", ioc->name, __irq_itoa(pdev->irq)));
1419#endif
1420 }
1421
1422 /* Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets. 1385 /* Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets.
1423 */ 1386 */
1424 mpt_detect_bound_ports(ioc, pdev); 1387 mpt_detect_bound_ports(ioc, pdev);
@@ -1428,11 +1391,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
1428 printk(KERN_WARNING MYNAM 1391 printk(KERN_WARNING MYNAM
1429 ": WARNING - %s did not initialize properly! (%d)\n", 1392 ": WARNING - %s did not initialize properly! (%d)\n",
1430 ioc->name, r); 1393 ioc->name, r);
1431
1432 list_del(&ioc->list); 1394 list_del(&ioc->list);
1433 free_irq(ioc->pci_irq, ioc);
1434 if (mpt_msi_enable)
1435 pci_disable_msi(pdev);
1436 if (ioc->alt_ioc) 1395 if (ioc->alt_ioc)
1437 ioc->alt_ioc->alt_ioc = NULL; 1396 ioc->alt_ioc->alt_ioc = NULL;
1438 iounmap(mem); 1397 iounmap(mem);
@@ -1651,6 +1610,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1651 int handlers; 1610 int handlers;
1652 int ret = 0; 1611 int ret = 0;
1653 int reset_alt_ioc_active = 0; 1612 int reset_alt_ioc_active = 0;
1613 int irq_allocated = 0;
1654 1614
1655 printk(KERN_INFO MYNAM ": Initiating %s %s\n", 1615 printk(KERN_INFO MYNAM ": Initiating %s %s\n",
1656 ioc->name, reason==MPT_HOSTEVENT_IOC_BRINGUP ? "bringup" : "recovery"); 1616 ioc->name, reason==MPT_HOSTEVENT_IOC_BRINGUP ? "bringup" : "recovery");
@@ -1734,6 +1694,36 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1734 } 1694 }
1735 } 1695 }
1736 1696
1697 /*
1698 * Device is reset now. It must have de-asserted the interrupt line
1699 * (if it was asserted) and it should be safe to register for the
1700 * interrupt now.
1701 */
1702 if ((ret == 0) && (reason == MPT_HOSTEVENT_IOC_BRINGUP)) {
1703 ioc->pci_irq = -1;
1704 if (ioc->pcidev->irq) {
1705 if (mpt_msi_enable && !pci_enable_msi(ioc->pcidev))
1706 printk(MYIOC_s_INFO_FMT "PCI-MSI enabled\n",
1707 ioc->name);
1708 rc = request_irq(ioc->pcidev->irq, mpt_interrupt,
1709 SA_SHIRQ, ioc->name, ioc);
1710 if (rc < 0) {
1711 printk(MYIOC_s_ERR_FMT "Unable to allocate "
1712 "interrupt %d!\n", ioc->name,
1713 ioc->pcidev->irq);
1714 if (mpt_msi_enable)
1715 pci_disable_msi(ioc->pcidev);
1716 return -EBUSY;
1717 }
1718 irq_allocated = 1;
1719 ioc->pci_irq = ioc->pcidev->irq;
1720 pci_set_master(ioc->pcidev); /* ?? */
1721 pci_set_drvdata(ioc->pcidev, ioc);
1722 dprintk((KERN_INFO MYNAM ": %s installed at interrupt "
1723 "%d\n", ioc->name, ioc->pcidev->irq));
1724 }
1725 }
1726
1737 /* Prime reply & request queues! 1727 /* Prime reply & request queues!
1738 * (mucho alloc's) Must be done prior to 1728 * (mucho alloc's) Must be done prior to
1739 * init as upper addresses are needed for init. 1729 * init as upper addresses are needed for init.
@@ -1833,7 +1823,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1833 ret = mptbase_sas_persist_operation(ioc, 1823 ret = mptbase_sas_persist_operation(ioc,
1834 MPI_SAS_OP_CLEAR_NOT_PRESENT); 1824 MPI_SAS_OP_CLEAR_NOT_PRESENT);
1835 if(ret != 0) 1825 if(ret != 0)
1836 return -1; 1826 goto out;
1837 } 1827 }
1838 1828
1839 /* Find IM volumes 1829 /* Find IM volumes
@@ -1841,14 +1831,6 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1841 mpt_findImVolumes(ioc); 1831 mpt_findImVolumes(ioc);
1842 1832
1843 } else if (ioc->bus_type == FC) { 1833 } else if (ioc->bus_type == FC) {
1844 /*
1845 * Pre-fetch FC port WWN and stuff...
1846 * (FCPortPage0_t stuff)
1847 */
1848 for (ii=0; ii < ioc->facts.NumberOfPorts; ii++) {
1849 (void) mptbase_GetFcPortPage0(ioc, ii);
1850 }
1851
1852 if ((ioc->pfacts[0].ProtocolFlags & MPI_PORTFACTS_PROTOCOL_LAN) && 1834 if ((ioc->pfacts[0].ProtocolFlags & MPI_PORTFACTS_PROTOCOL_LAN) &&
1853 (ioc->lan_cnfg_page0.Header.PageLength == 0)) { 1835 (ioc->lan_cnfg_page0.Header.PageLength == 0)) {
1854 /* 1836 /*
@@ -1914,6 +1896,12 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1914 /* FIXME? Examine results here? */ 1896 /* FIXME? Examine results here? */
1915 } 1897 }
1916 1898
1899out:
1900 if ((ret != 0) && irq_allocated) {
1901 free_irq(ioc->pci_irq, ioc);
1902 if (mpt_msi_enable)
1903 pci_disable_msi(ioc->pcidev);
1904 }
1917 return ret; 1905 return ret;
1918} 1906}
1919 1907
@@ -2288,7 +2276,7 @@ MakeIocReady(MPT_ADAPTER *ioc, int force, int sleepFlag)
2288 } 2276 }
2289 2277
2290 if (sleepFlag == CAN_SLEEP) { 2278 if (sleepFlag == CAN_SLEEP) {
2291 msleep_interruptible(1); 2279 msleep(1);
2292 } else { 2280 } else {
2293 mdelay (1); /* 1 msec delay */ 2281 mdelay (1); /* 1 msec delay */
2294 } 2282 }
@@ -2676,7 +2664,7 @@ SendIocInit(MPT_ADAPTER *ioc, int sleepFlag)
2676 state = mpt_GetIocState(ioc, 1); 2664 state = mpt_GetIocState(ioc, 1);
2677 while (state != MPI_IOC_STATE_OPERATIONAL && --cntdn) { 2665 while (state != MPI_IOC_STATE_OPERATIONAL && --cntdn) {
2678 if (sleepFlag == CAN_SLEEP) { 2666 if (sleepFlag == CAN_SLEEP) {
2679 msleep_interruptible(1); 2667 msleep(1);
2680 } else { 2668 } else {
2681 mdelay(1); 2669 mdelay(1);
2682 } 2670 }
@@ -2928,7 +2916,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
2928 2916
2929 /* wait 1 msec */ 2917 /* wait 1 msec */
2930 if (sleepFlag == CAN_SLEEP) { 2918 if (sleepFlag == CAN_SLEEP) {
2931 msleep_interruptible(1); 2919 msleep(1);
2932 } else { 2920 } else {
2933 mdelay (1); 2921 mdelay (1);
2934 } 2922 }
@@ -2945,7 +2933,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
2945 } 2933 }
2946 /* wait .1 sec */ 2934 /* wait .1 sec */
2947 if (sleepFlag == CAN_SLEEP) { 2935 if (sleepFlag == CAN_SLEEP) {
2948 msleep_interruptible (100); 2936 msleep (100);
2949 } else { 2937 } else {
2950 mdelay (100); 2938 mdelay (100);
2951 } 2939 }
@@ -3035,7 +3023,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
3035 3023
3036 /* wait 1 msec */ 3024 /* wait 1 msec */
3037 if (sleepFlag == CAN_SLEEP) { 3025 if (sleepFlag == CAN_SLEEP) {
3038 msleep_interruptible (1); 3026 msleep (1);
3039 } else { 3027 } else {
3040 mdelay (1); 3028 mdelay (1);
3041 } 3029 }
@@ -3083,7 +3071,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
3083 return 0; 3071 return 0;
3084 } 3072 }
3085 if (sleepFlag == CAN_SLEEP) { 3073 if (sleepFlag == CAN_SLEEP) {
3086 msleep_interruptible (10); 3074 msleep (10);
3087 } else { 3075 } else {
3088 mdelay (10); 3076 mdelay (10);
3089 } 3077 }
@@ -3134,7 +3122,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
3134 SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, sleepFlag); 3122 SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, sleepFlag);
3135 3123
3136 if (sleepFlag == CAN_SLEEP) { 3124 if (sleepFlag == CAN_SLEEP) {
3137 msleep_interruptible (1000); 3125 msleep (1000);
3138 } else { 3126 } else {
3139 mdelay (1000); 3127 mdelay (1000);
3140 } 3128 }
@@ -3156,7 +3144,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
3156 return hard_reset_done; 3144 return hard_reset_done;
3157 } 3145 }
3158 if (sleepFlag == CAN_SLEEP) { 3146 if (sleepFlag == CAN_SLEEP) {
3159 msleep_interruptible (10); 3147 msleep (10);
3160 } else { 3148 } else {
3161 mdelay (10); 3149 mdelay (10);
3162 } 3150 }
@@ -3227,7 +3215,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3227 3215
3228 /* wait 100 msec */ 3216 /* wait 100 msec */
3229 if (sleepFlag == CAN_SLEEP) { 3217 if (sleepFlag == CAN_SLEEP) {
3230 msleep_interruptible (100); 3218 msleep (100);
3231 } else { 3219 } else {
3232 mdelay (100); 3220 mdelay (100);
3233 } 3221 }
@@ -3306,7 +3294,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3306 3294
3307 /* wait 1 sec */ 3295 /* wait 1 sec */
3308 if (sleepFlag == CAN_SLEEP) { 3296 if (sleepFlag == CAN_SLEEP) {
3309 msleep_interruptible (1000); 3297 msleep (1000);
3310 } else { 3298 } else {
3311 mdelay (1000); 3299 mdelay (1000);
3312 } 3300 }
@@ -3334,7 +3322,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3334 3322
3335 /* wait 1 sec */ 3323 /* wait 1 sec */
3336 if (sleepFlag == CAN_SLEEP) { 3324 if (sleepFlag == CAN_SLEEP) {
3337 msleep_interruptible (1000); 3325 msleep (1000);
3338 } else { 3326 } else {
3339 mdelay (1000); 3327 mdelay (1000);
3340 } 3328 }
@@ -3368,7 +3356,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ignore, int sleepFlag)
3368 3356
3369 /* wait 100 msec */ 3357 /* wait 100 msec */
3370 if (sleepFlag == CAN_SLEEP) { 3358 if (sleepFlag == CAN_SLEEP) {
3371 msleep_interruptible (100); 3359 msleep (100);
3372 } else { 3360 } else {
3373 mdelay (100); 3361 mdelay (100);
3374 } 3362 }
@@ -3462,7 +3450,7 @@ SendIocReset(MPT_ADAPTER *ioc, u8 reset_type, int sleepFlag)
3462 } 3450 }
3463 3451
3464 if (sleepFlag == CAN_SLEEP) { 3452 if (sleepFlag == CAN_SLEEP) {
3465 msleep_interruptible(1); 3453 msleep(1);
3466 } else { 3454 } else {
3467 mdelay (1); /* 1 msec delay */ 3455 mdelay (1); /* 1 msec delay */
3468 } 3456 }
@@ -3902,7 +3890,7 @@ WaitForDoorbellAck(MPT_ADAPTER *ioc, int howlong, int sleepFlag)
3902 intstat = CHIPREG_READ32(&ioc->chip->IntStatus); 3890 intstat = CHIPREG_READ32(&ioc->chip->IntStatus);
3903 if (! (intstat & MPI_HIS_IOP_DOORBELL_STATUS)) 3891 if (! (intstat & MPI_HIS_IOP_DOORBELL_STATUS))
3904 break; 3892 break;
3905 msleep_interruptible (1); 3893 msleep (1);
3906 count++; 3894 count++;
3907 } 3895 }
3908 } else { 3896 } else {
@@ -3951,7 +3939,7 @@ WaitForDoorbellInt(MPT_ADAPTER *ioc, int howlong, int sleepFlag)
3951 intstat = CHIPREG_READ32(&ioc->chip->IntStatus); 3939 intstat = CHIPREG_READ32(&ioc->chip->IntStatus);
3952 if (intstat & MPI_HIS_DOORBELL_INTERRUPT) 3940 if (intstat & MPI_HIS_DOORBELL_INTERRUPT)
3953 break; 3941 break;
3954 msleep_interruptible(1); 3942 msleep(1);
3955 count++; 3943 count++;
3956 } 3944 }
3957 } else { 3945 } else {
@@ -4174,108 +4162,6 @@ GetLanConfigPages(MPT_ADAPTER *ioc)
4174 4162
4175/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 4163/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
4176/* 4164/*
4177 * mptbase_GetFcPortPage0 - Fetch FCPort config Page0.
4178 * @ioc: Pointer to MPT_ADAPTER structure
4179 * @portnum: IOC Port number
4180 *
4181 * Return: 0 for success
4182 * -ENOMEM if no memory available
4183 * -EPERM if not allowed due to ISR context
4184 * -EAGAIN if no msg frames currently available
4185 * -EFAULT for non-successful reply or no reply (timeout)
4186 */
4187int
4188mptbase_GetFcPortPage0(MPT_ADAPTER *ioc, int portnum)
4189{
4190 ConfigPageHeader_t hdr;
4191 CONFIGPARMS cfg;
4192 FCPortPage0_t *ppage0_alloc;
4193 FCPortPage0_t *pp0dest;
4194 dma_addr_t page0_dma;
4195 int data_sz;
4196 int copy_sz;
4197 int rc;
4198 int count = 400;
4199
4200
4201 /* Get FCPort Page 0 header */
4202 hdr.PageVersion = 0;
4203 hdr.PageLength = 0;
4204 hdr.PageNumber = 0;
4205 hdr.PageType = MPI_CONFIG_PAGETYPE_FC_PORT;
4206 cfg.cfghdr.hdr = &hdr;
4207 cfg.physAddr = -1;
4208 cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
4209 cfg.dir = 0;
4210 cfg.pageAddr = portnum;
4211 cfg.timeout = 0;
4212
4213 if ((rc = mpt_config(ioc, &cfg)) != 0)
4214 return rc;
4215
4216 if (hdr.PageLength == 0)
4217 return 0;
4218
4219 data_sz = hdr.PageLength * 4;
4220 rc = -ENOMEM;
4221 ppage0_alloc = (FCPortPage0_t *) pci_alloc_consistent(ioc->pcidev, data_sz, &page0_dma);
4222 if (ppage0_alloc) {
4223
4224 try_again:
4225 memset((u8 *)ppage0_alloc, 0, data_sz);
4226 cfg.physAddr = page0_dma;
4227 cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
4228
4229 if ((rc = mpt_config(ioc, &cfg)) == 0) {
4230 /* save the data */
4231 pp0dest = &ioc->fc_port_page0[portnum];
4232 copy_sz = min_t(int, sizeof(FCPortPage0_t), data_sz);
4233 memcpy(pp0dest, ppage0_alloc, copy_sz);
4234
4235 /*
4236 * Normalize endianness of structure data,
4237 * by byte-swapping all > 1 byte fields!
4238 */
4239 pp0dest->Flags = le32_to_cpu(pp0dest->Flags);
4240 pp0dest->PortIdentifier = le32_to_cpu(pp0dest->PortIdentifier);
4241 pp0dest->WWNN.Low = le32_to_cpu(pp0dest->WWNN.Low);
4242 pp0dest->WWNN.High = le32_to_cpu(pp0dest->WWNN.High);
4243 pp0dest->WWPN.Low = le32_to_cpu(pp0dest->WWPN.Low);
4244 pp0dest->WWPN.High = le32_to_cpu(pp0dest->WWPN.High);
4245 pp0dest->SupportedServiceClass = le32_to_cpu(pp0dest->SupportedServiceClass);
4246 pp0dest->SupportedSpeeds = le32_to_cpu(pp0dest->SupportedSpeeds);
4247 pp0dest->CurrentSpeed = le32_to_cpu(pp0dest->CurrentSpeed);
4248 pp0dest->MaxFrameSize = le32_to_cpu(pp0dest->MaxFrameSize);
4249 pp0dest->FabricWWNN.Low = le32_to_cpu(pp0dest->FabricWWNN.Low);
4250 pp0dest->FabricWWNN.High = le32_to_cpu(pp0dest->FabricWWNN.High);
4251 pp0dest->FabricWWPN.Low = le32_to_cpu(pp0dest->FabricWWPN.Low);
4252 pp0dest->FabricWWPN.High = le32_to_cpu(pp0dest->FabricWWPN.High);
4253 pp0dest->DiscoveredPortsCount = le32_to_cpu(pp0dest->DiscoveredPortsCount);
4254 pp0dest->MaxInitiators = le32_to_cpu(pp0dest->MaxInitiators);
4255
4256 /*
4257 * if still doing discovery,
4258 * hang loose a while until finished
4259 */
4260 if (pp0dest->PortState == MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN) {
4261 if (count-- > 0) {
4262 msleep_interruptible(100);
4263 goto try_again;
4264 }
4265 printk(MYIOC_s_INFO_FMT "Firmware discovery not"
4266 " complete.\n",
4267 ioc->name);
4268 }
4269 }
4270
4271 pci_free_consistent(ioc->pcidev, data_sz, (u8 *) ppage0_alloc, page0_dma);
4272 }
4273
4274 return rc;
4275}
4276
4277/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
4278/*
4279 * mptbase_sas_persist_operation - Perform operation on SAS Persitent Table 4165 * mptbase_sas_persist_operation - Perform operation on SAS Persitent Table
4280 * @ioc: Pointer to MPT_ADAPTER structure 4166 * @ioc: Pointer to MPT_ADAPTER structure
4281 * @sas_address: 64bit SAS Address for operation. 4167 * @sas_address: 64bit SAS Address for operation.
@@ -5647,11 +5533,7 @@ mpt_print_ioc_summary(MPT_ADAPTER *ioc, char *buffer, int *size, int len, int sh
5647 a[5], a[4], a[3], a[2], a[1], a[0]); 5533 a[5], a[4], a[3], a[2], a[1], a[0]);
5648 } 5534 }
5649 5535
5650#ifndef __sparc__
5651 y += sprintf(buffer+len+y, ", IRQ=%d", ioc->pci_irq); 5536 y += sprintf(buffer+len+y, ", IRQ=%d", ioc->pci_irq);
5652#else
5653 y += sprintf(buffer+len+y, ", IRQ=%s", __irq_itoa(ioc->pci_irq));
5654#endif
5655 5537
5656 if (!ioc->active) 5538 if (!ioc->active)
5657 y += sprintf(buffer+len+y, " (disabled)"); 5539 y += sprintf(buffer+len+y, " (disabled)");
@@ -6483,7 +6365,6 @@ EXPORT_SYMBOL(mpt_findImVolumes);
6483EXPORT_SYMBOL(mpt_alloc_fw_memory); 6365EXPORT_SYMBOL(mpt_alloc_fw_memory);
6484EXPORT_SYMBOL(mpt_free_fw_memory); 6366EXPORT_SYMBOL(mpt_free_fw_memory);
6485EXPORT_SYMBOL(mptbase_sas_persist_operation); 6367EXPORT_SYMBOL(mptbase_sas_persist_operation);
6486EXPORT_SYMBOL(mptbase_GetFcPortPage0);
6487 6368
6488 6369
6489/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 6370/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/