projects/linux·commit c9b8af00

Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6

c9b8af00 · Linus Torvalds <[email protected]> · 2009-06-12 09:50:42 -07:00

* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (154 commits)
  [SCSI] osd: Remove out-of-tree left overs
  [SCSI] libosd: Use REQ_QUIET requests.
  [SCSI] osduld: use filp_open() when looking up an osd-device
  [SCSI] libosd: Define an osd_dev wrapper to retrieve the request_queue
  [SCSI] libosd: osd_req_{read,write} takes a length parameter
  [SCSI] libosd: Let _osd_req_finalize_data_integrity receive number of out_bytes
  [SCSI] libosd: osd_req_{read,write}_kern new API
  [SCSI] libosd: Better printout of OSD target system information
  [SCSI] libosd: OSD2r05: Attribute definitions
  [SCSI] libosd: OSD2r05: Additional command enums
  [SCSI] mpt fusion: fix up doc book comments
  [SCSI] mpt fusion: Added support for Broadcast primitives Event handling
  [SCSI] mpt fusion: Queue full event handling
  [SCSI] mpt fusion: RAID device handling and Dual port Raid support is added
  [SCSI] mpt fusion: Put IOC into ready state if it not already in ready state
  [SCSI] mpt fusion: Code Cleanup patch
  [SCSI] mpt fusion: Rescan SAS topology added
  [SCSI] mpt fusion: SAS topology scan changes, expander events
  [SCSI] mpt fusion: Firmware event implementation using seperate WorkQueue
  [SCSI] mpt fusion: rewrite of ioctl_cmds internal generated function
  ...
Commit
c9b8af00ff71f86ff3d092cc60ca673e1d0eae5b
Parents
c59a264c · 82681a31

Merge commit. Changes below are compared with the first parent: c59a264c.

Changes

141 files changed · +43233 −9360

FileStatusAddDelContent
drivers/infiniband/ulp/iser/iscsi_iser.cmodified+4−6View file
drivers/message/fusion/mptbase.cmodified+1101−470View file
drivers/message/fusion/mptbase.hmodified+110−70View file
drivers/message/fusion/mptctl.cmodified+379−313View file
drivers/message/fusion/mptdebug.hmodified+3−0View file
drivers/message/fusion/mptfc.cmodified+4−11View file
drivers/message/fusion/mptsas.cmodified+2361−771View file
drivers/message/fusion/mptsas.hmodified+37−4View file
drivers/message/fusion/mptscsih.cmodified+539−790View file
drivers/message/fusion/mptscsih.hmodified+6−1View file
drivers/message/fusion/mptspi.cmodified+38−33View file
drivers/net/Kconfigmodified+11−0View file
drivers/net/Makefilemodified+1−0View file
drivers/net/bnx2.cmodified+190−3View file
drivers/net/bnx2.hmodified+18−0View file
drivers/net/cnic.cadded+2711−0View file
drivers/net/cnic.hadded+299−0View file
drivers/net/cnic_defs.hadded+580−0View file
drivers/net/cnic_if.hadded+299−0View file
drivers/s390/scsi/zfcp_ccw.cmodified+20−10View file
drivers/s390/scsi/zfcp_dbf.cmodified+5−5View file
drivers/s390/scsi/zfcp_def.hmodified+0−7View file
drivers/s390/scsi/zfcp_erp.cmodified+7−1View file
drivers/s390/scsi/zfcp_ext.hmodified+1−0View file
drivers/s390/scsi/zfcp_fc.cmodified+6−1View file
drivers/s390/scsi/zfcp_fsf.cmodified+17−12View file
drivers/s390/scsi/zfcp_scsi.cmodified+12−1View file
drivers/scsi/Kconfigmodified+11−20View file
drivers/scsi/Makefilemodified+2−1View file
drivers/scsi/NCR_D700.cmodified+1−1View file
drivers/scsi/bnx2i/57xx_iscsi_constants.hadded+155−0View file
drivers/scsi/bnx2i/57xx_iscsi_hsi.hadded+1509−0View file
drivers/scsi/bnx2i/Kconfigadded+7−0View file
drivers/scsi/bnx2i/Makefileadded+3−0View file
drivers/scsi/bnx2i/bnx2i.hadded+771−0View file
drivers/scsi/bnx2i/bnx2i_hwi.cadded+2405−0View file
drivers/scsi/bnx2i/bnx2i_init.cadded+438−0View file
drivers/scsi/bnx2i/bnx2i_iscsi.cadded+2064−0View file
drivers/scsi/bnx2i/bnx2i_sysfs.cadded+142−0View file
drivers/scsi/cxgb3i/cxgb3i.hmodified+0−1View file
drivers/scsi/cxgb3i/cxgb3i_iscsi.cmodified+22−4View file
drivers/scsi/cxgb3i/cxgb3i_offload.cmodified+14−9View file
drivers/scsi/cxgb3i/cxgb3i_offload.hmodified+2−1View file
drivers/scsi/device_handler/scsi_dh_rdac.cmodified+6−0View file
drivers/scsi/fcoe/fcoe.cmodified+36−59View file
drivers/scsi/fcoe/fcoe.hmodified+1−0View file
drivers/scsi/fcoe/libfcoe.cmodified+13−8View file
drivers/scsi/fnic/fnic_main.cmodified+1−0View file
drivers/scsi/gdth_proc.cmodified+3−2View file
drivers/scsi/ibmvscsi/ibmvfc.cmodified+304−130View file
drivers/scsi/ibmvscsi/ibmvfc.hmodified+33−7View file
drivers/scsi/ibmvscsi/ibmvscsi.cmodified+346−117View file
drivers/scsi/ibmvscsi/ibmvscsi.hmodified+4−0View file
drivers/scsi/ibmvscsi/viosrp.hmodified+67−1View file
drivers/scsi/ipr.cmodified+3−2View file
drivers/scsi/libfc/fc_exch.cmodified+4−0View file
drivers/scsi/libfc/fc_fcp.cmodified+1−1View file
drivers/scsi/libfc/fc_rport.cmodified+3−3View file
drivers/scsi/libiscsi.cmodified+241−227View file
drivers/scsi/libiscsi_tcp.cmodified+15−3View file
drivers/scsi/lpfc/lpfc.hmodified+114−9View file
drivers/scsi/lpfc/lpfc_attr.cmodified+167−83View file
drivers/scsi/lpfc/lpfc_crtn.hmodified+52−11View file
drivers/scsi/lpfc/lpfc_ct.cmodified+9−6View file
drivers/scsi/lpfc/lpfc_debugfs.cmodified+14−7View file
drivers/scsi/lpfc/lpfc_disc.hmodified+1−0View file
drivers/scsi/lpfc/lpfc_els.cmodified+190−85View file
drivers/scsi/lpfc/lpfc_hbadisc.cmodified+1264−101View file
drivers/scsi/lpfc/lpfc_hw.hmodified+99−43View file
drivers/scsi/lpfc/lpfc_hw4.hadded+2141−0View file
drivers/scsi/lpfc/lpfc_init.cmodified+5259−785View file
drivers/scsi/lpfc/lpfc_logmsg.hmodified+30−24View file
drivers/scsi/lpfc/lpfc_mbox.cmodified+631−43View file
drivers/scsi/lpfc/lpfc_mem.cmodified+162−44View file
drivers/scsi/lpfc/lpfc_nportdisc.cmodified+37−14View file
drivers/scsi/lpfc/lpfc_scsi.cmodified+785−145View file
drivers/scsi/lpfc/lpfc_scsi.hmodified+2−0View file
drivers/scsi/lpfc/lpfc_sli.cmodified+6301−530View file
drivers/scsi/lpfc/lpfc_sli.hmodified+23−6View file
drivers/scsi/lpfc/lpfc_sli4.hadded+467−0View file
drivers/scsi/lpfc/lpfc_version.hmodified+1−1View file
drivers/scsi/lpfc/lpfc_vport.cmodified+46−16View file
drivers/scsi/mpt2sas/mpt2sas_base.hmodified+3−2View file
drivers/scsi/mpt2sas/mpt2sas_ctl.cmodified+21−11View file
drivers/scsi/mpt2sas/mpt2sas_scsih.cmodified+294−69View file
drivers/scsi/mpt2sas/mpt2sas_transport.cmodified+18−18View file
drivers/scsi/mvsas.cdeleted+0−3222View before deletion
drivers/scsi/mvsas/Kconfigadded+42−0View file
drivers/scsi/mvsas/Makefileadded+32−0View file
drivers/scsi/mvsas/mv_64xx.cadded+793−0View file
drivers/scsi/mvsas/mv_64xx.hadded+151−0View file
drivers/scsi/mvsas/mv_94xx.cadded+672−0View file
drivers/scsi/mvsas/mv_94xx.hadded+222−0View file
drivers/scsi/mvsas/mv_chips.hadded+280−0View file
drivers/scsi/mvsas/mv_defs.hadded+502−0View file
drivers/scsi/mvsas/mv_init.cadded+703−0View file
drivers/scsi/mvsas/mv_sas.cadded+2154−0View file
drivers/scsi/mvsas/mv_sas.hadded+406−0View file
drivers/scsi/osd/Kbuildmodified+0−25View file
drivers/scsi/osd/Makefiledeleted+0−37View before deletion
drivers/scsi/osd/osd_initiator.cmodified+59−24View file
drivers/scsi/osd/osd_uld.cmodified+30−36View file
drivers/scsi/qla1280.cmodified+166−221View file
drivers/scsi/qla1280.hmodified+2−1View file
drivers/scsi/qla2xxx/qla_attr.cmodified+208−19View file
drivers/scsi/qla2xxx/qla_dbg.cmodified+5−8View file
drivers/scsi/qla2xxx/qla_def.hmodified+33−12View file
drivers/scsi/qla2xxx/qla_fw.hmodified+4−2View file
drivers/scsi/qla2xxx/qla_gbl.hmodified+31−12View file
drivers/scsi/qla2xxx/qla_gs.cmodified+4−1View file
drivers/scsi/qla2xxx/qla_init.cmodified+152−54View file
drivers/scsi/qla2xxx/qla_iocb.cmodified+29−26View file
drivers/scsi/qla2xxx/qla_isr.cmodified+108−132View file
drivers/scsi/qla2xxx/qla_mbx.cmodified+212−32View file
drivers/scsi/qla2xxx/qla_mid.cmodified+56−62View file
drivers/scsi/qla2xxx/qla_os.cmodified+207−87View file
drivers/scsi/qla2xxx/qla_sup.cmodified+26−21View file
drivers/scsi/qla2xxx/qla_version.hmodified+1−1View file
drivers/scsi/scsi.cmodified+2−2View file
drivers/scsi/scsi_debug.cmodified+1−1View file
drivers/scsi/scsi_error.cmodified+7−14View file
drivers/scsi/scsi_lib.cmodified+6−8View file
drivers/scsi/scsi_scan.cmodified+2−2View file
drivers/scsi/scsi_transport_iscsi.cmodified+126−47View file
drivers/scsi/sd.cmodified+21−24View file
drivers/scsi/st.cmodified+1−1View file
drivers/scsi/sym53c8xx_2/sym_glue.cmodified+52−14View file
drivers/scsi/sym53c8xx_2/sym_hipd.cmodified+48−1View file
drivers/scsi/sym53c8xx_2/sym_hipd.hmodified+2−0View file
fs/exofs/common.hmodified+0−6View file
fs/exofs/inode.cmodified+4−4View file
fs/exofs/osd.cmodified+0−26View file
include/linux/if_ether.hmodified+1−0View file
include/scsi/fc/fc_fip.hmodified+0−7View file
include/scsi/iscsi_if.hmodified+48−1View file
include/scsi/libfc.hmodified+1−0View file
include/scsi/libiscsi.hmodified+5−3View file
include/scsi/osd_attributes.hmodified+72−2View file
include/scsi/osd_initiator.hmodified+12−2View file
include/scsi/osd_protocol.hmodified+8−0View file
include/scsi/scsi_transport_iscsi.hmodified+7−1View file

Only the first 600 diff lines are shown. Download the complete patch.

drivers/infiniband/ulp/iser/iscsi_iser.c

View file
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 75223f5..0ba6ec8 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -257,11 +257,8 @@ static void iscsi_iser_cleanup_task(struct iscsi_task *task)
{
struct iscsi_iser_task *iser_task = task->dd_data;
- /*
- * mgmt tasks do not need special cleanup and we do not
- * allocate anything in the init task callout
- */
- if (!task->sc || task->state == ISCSI_TASK_PENDING)
+ /* mgmt tasks do not need special cleanup */
+ if (!task->sc)
return;
if (iser_task->status == ISER_TASK_STATUS_STARTED) {
@@ -517,7 +514,8 @@ iscsi_iser_conn_get_stats(struct iscsi_cls_conn *cls_conn, struct iscsi_stats *s
}
static struct iscsi_endpoint *
-iscsi_iser_ep_connect(struct sockaddr *dst_addr, int non_blocking)
+iscsi_iser_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
+ int non_blocking)
{
int err;
struct iser_conn *ib_conn;

drivers/message/fusion/mptbase.c

View file
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 5d496a9..44b9315 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -146,7 +146,6 @@ static MPT_EVHANDLER MptEvHandlers[MPT_MAX_PROTOCOL_DRIVERS];
static MPT_RESETHANDLER MptResetHandlers[MPT_MAX_PROTOCOL_DRIVERS];
static struct mpt_pci_driver *MptDeviceDriverHandlers[MPT_MAX_PROTOCOL_DRIVERS];
-static DECLARE_WAIT_QUEUE_HEAD(mpt_waitq);
/*
* Driver Callback Index's
@@ -159,7 +158,8 @@ static u8 last_drv_idx;
* Forward protos...
*/
static irqreturn_t mpt_interrupt(int irq, void *bus_id);
-static int mpt_base_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply);
+static int mptbase_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req,
+ MPT_FRAME_HDR *reply);
static int mpt_handshake_req_reply_wait(MPT_ADAPTER *ioc, int reqBytes,
u32 *req, int replyBytes, u16 *u16reply, int maxwait,
int sleepFlag);
@@ -190,9 +190,9 @@ static int mpt_GetScsiPortSettings(MPT_ADAPTER *ioc, int portnum);
static int mpt_readScsiDevicePageHeaders(MPT_ADAPTER *ioc, int portnum);
static void mpt_read_ioc_pg_1(MPT_ADAPTER *ioc);
static void mpt_read_ioc_pg_4(MPT_ADAPTER *ioc);
-static void mpt_timer_expired(unsigned long data);
static void mpt_get_manufacturing_pg_0(MPT_ADAPTER *ioc);
-static int SendEventNotification(MPT_ADAPTER *ioc, u8 EvSwitch);
+static int SendEventNotification(MPT_ADAPTER *ioc, u8 EvSwitch,
+ int sleepFlag);
static int SendEventAck(MPT_ADAPTER *ioc, EventNotificationReply_t *evnp);
static int mpt_host_page_access_control(MPT_ADAPTER *ioc, u8 access_control_value, int sleepFlag);
static int mpt_host_page_alloc(MPT_ADAPTER *ioc, pIOCInit_t ioc_init);
@@ -207,8 +207,8 @@ static int procmpt_iocinfo_read(char *buf, char **start, off_t offset,
#endif
static void mpt_get_fw_exp_ver(char *buf, MPT_ADAPTER *ioc);
-//int mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag);
-static int ProcessEventNotification(MPT_ADAPTER *ioc, EventNotificationReply_t *evReply, int *evHandlers);
+static int ProcessEventNotification(MPT_ADAPTER *ioc,
+ EventNotificationReply_t *evReply, int *evHandlers);
static void mpt_iocstatus_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf);
static void mpt_fc_log_info(MPT_ADAPTER *ioc, u32 log_info);
static void mpt_spi_log_info(MPT_ADAPTER *ioc, u32 log_info);
@@ -277,6 +277,56 @@ mpt_get_cb_idx(MPT_DRIVER_CLASS dclass)
}
/**
+ * mpt_is_discovery_complete - determine if discovery has completed
+ * @ioc: per adatper instance
+ *
+ * Returns 1 when discovery completed, else zero.
+ */
+static int
+mpt_is_discovery_complete(MPT_ADAPTER *ioc)
+{
+ ConfigExtendedPageHeader_t hdr;
+ CONFIGPARMS cfg;
+ SasIOUnitPage0_t *buffer;
+ dma_addr_t dma_handle;
+ int rc = 0;
+
+ memset(&hdr, 0, sizeof(ConfigExtendedPageHeader_t));
+ memset(&cfg, 0, sizeof(CONFIGPARMS));
+ hdr.PageVersion = MPI_SASIOUNITPAGE0_PAGEVERSION;
+ hdr.PageType = MPI_CONFIG_PAGETYPE_EXTENDED;
+ hdr.ExtPageType = MPI_CONFIG_EXTPAGETYPE_SAS_IO_UNIT;
+ cfg.cfghdr.ehdr = &hdr;
+ cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
+
+ if ((mpt_config(ioc, &cfg)))
+ goto out;
+ if (!hdr.ExtPageLength)
+ goto out;
+
+ buffer = pci_alloc_consistent(ioc->pcidev, hdr.ExtPageLength * 4,
+ &dma_handle);
+ if (!buffer)
+ goto out;
+
+ cfg.physAddr = dma_handle;
+ cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
+
+ if ((mpt_config(ioc, &cfg)))
+ goto out_free_consistent;
+
+ if (!(buffer->PhyData[0].PortFlags &
+ MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS))
+ rc = 1;
+
+ out_free_consistent:
+ pci_free_consistent(ioc->pcidev, hdr.ExtPageLength * 4,
+ buffer, dma_handle);
+ out:
+ return rc;
+}
+
+/**
* mpt_fault_reset_work - work performed on workq after ioc fault
* @work: input argument, used to derive ioc
*
@@ -290,7 +340,7 @@ mpt_fault_reset_work(struct work_struct *work)
int rc;
unsigned long flags;
- if (ioc->diagPending || !ioc->active)
+ if (ioc->ioc_reset_in_progress || !ioc->active)
goto out;
ioc_raw_state = mpt_GetIocState(ioc, 0);
@@ -307,6 +357,12 @@ mpt_fault_reset_work(struct work_struct *work)
printk(MYIOC_s_WARN_FMT "IOC is in FAULT state after "
"reset (%04xh)\n", ioc->name, ioc_raw_state &
MPI_DOORBELL_DATA_MASK);
+ } else if (ioc->bus_type == SAS && ioc->sas_discovery_quiesce_io) {
+ if ((mpt_is_discovery_complete(ioc))) {
+ devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT "clearing "
+ "discovery_quiesce_io flag\n", ioc->name));
+ ioc->sas_discovery_quiesce_io = 0;
+ }
}
out:
@@ -317,11 +373,11 @@ mpt_fault_reset_work(struct work_struct *work)
ioc = ioc->alt_ioc;
/* rearm the timer */
- spin_lock_irqsave(&ioc->fault_reset_work_lock, flags);
+ spin_lock_irqsave(&ioc->taskmgmt_lock, flags);
if (ioc->reset_work_q)
queue_delayed_work(ioc->reset_work_q, &ioc->fault_reset_work,
msecs_to_jiffies(MPT_POLLING_INTERVAL));
- spin_unlock_irqrestore(&ioc->fault_reset_work_lock, flags);
+ spin_unlock_irqrestore(&ioc->taskmgmt_lock, flags);
}
@@ -501,9 +557,9 @@ mpt_interrupt(int irq, void *bus_id)
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/**
- * mpt_base_reply - MPT base driver's callback routine
+ * mptbase_reply - MPT base driver's callback routine
* @ioc: Pointer to MPT_ADAPTER structure
- * @mf: Pointer to original MPT request frame
+ * @req: Pointer to original MPT request frame
* @reply: Pointer to MPT reply frame (NULL if TurboReply)
*
* MPT base driver's callback routine; all base driver
@@ -514,122 +570,49 @@ mpt_interrupt(int irq, void *bus_id)
* should be freed, or 0 if it shouldn't.
*/
static int
-mpt_base_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *reply)
+mptbase_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply)
{
+ EventNotificationReply_t *pEventReply;
+ u8 event;
+ int evHandlers;
int freereq = 1;
- u8 func;
-
- dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mpt_base_reply() called\n", ioc->name));
-#ifdef CONFIG_FUSION_LOGGING
- if ((ioc->debug_level & MPT_DEBUG_MSG_FRAME) &&
- !(reply->u.hdr.MsgFlags & MPI_MSGFLAGS_CONTINUATION_REPLY)) {
- dmfprintk(ioc, printk(MYIOC_s_INFO_FMT ": Original request frame (@%p) header\n",
- ioc->name, mf));
- DBG_DUMP_REQUEST_FRAME_HDR(ioc, (u32 *)mf);
- }
-#endif
-
- func = reply->u.hdr.Function;
- dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mpt_base_reply, Function=%02Xh\n",
- ioc->name, func));
-
- if (func == MPI_FUNCTION_EVENT_NOTIFICATION) {
- EventNotificationReply_t *pEvReply = (EventNotificationReply_t *) reply;
- int evHandlers = 0;
- int results;
-
- results = ProcessEventNotification(ioc, pEvReply, &evHandlers);
- if (results != evHandlers) {
- /* CHECKME! Any special handling needed here? */
- devtverboseprintk(ioc, printk(MYIOC_s_WARN_FMT "Called %d event handlers, sum results = %d\n",
- ioc->name, evHandlers, results));
- }
- /*
- * Hmmm... It seems that EventNotificationReply is an exception
- * to the rule of one reply per request.
- */
- if (pEvReply->MsgFlags & MPI_MSGFLAGS_CONTINUATION_REPLY) {
+ switch (reply->u.hdr.Function) {
+ case MPI_FUNCTION_EVENT_NOTIFICATION:
+ pEventReply = (EventNotificationReply_t *)reply;
+ evHandlers = 0;
+ ProcessEventNotification(ioc, pEventReply, &evHandlers);
+ event = le32_to_cpu(pEventReply->Event) & 0xFF;
+ if (pEventReply->MsgFlags & MPI_MSGFLAGS_CONTINUATION_REPLY)
freereq = 0;
- } else {
- devtverboseprintk(ioc, printk(MYIOC_s_WARN_FMT "EVENT_NOTIFICATION reply %p returns Request frame\n",
- ioc->name, pEvReply));
- }
-
-#ifdef CONFIG_PROC_FS
-// LogEvent(ioc, pEvReply);
-#endif
-
- } else if (func == MPI_FUNCTION_EVENT_ACK) {
- dprintk(ioc, printk(MYIOC_s_DEBUG_FMT "mpt_base_reply, EventAck reply received\n",
- ioc->name));
- } else if (func == MPI_FUNCTION_CONFIG) {
- CONFIGPARMS *pCfg;
- unsigned long flags;
-
- dcprintk(ioc, printk(MYIOC_s_DEBUG_FMT "config_complete (mf=%p,mr=%p)\n",
- ioc->name, mf, reply));
-
- pCfg = * ((CONFIGPARMS **)((u8 *) mf + ioc->req_sz - sizeof(void *)));
-
- if (pCfg) {
- /* disable timer and remove from linked list */
- del_timer(&pCfg->timer);
-
- spin_lock_irqsave(&ioc->FreeQlock, flags);
- list_del(&pCfg->linkage);
- spin_unlock_irqrestore(&ioc->FreeQlock, flags);
-
- /*
- * If IOC Status is SUCCESS, save the header
- * and set the status code to GOOD.
- */
- pCfg->status = MPT_CONFIG_ERROR;
- if (reply) {
- ConfigReply_t *pReply = (ConfigReply_t *)reply;
- u16 status;
-
- status = le16_to_cpu(pReply->IOCStatus) & MPI_IOCSTATUS_MASK;
- dcprintk(ioc, printk(MYIOC_s_NOTE_FMT " IOCStatus=%04xh, IOCLogInfo=%08xh\n",
- ioc->name, status, le32_to_cpu(pReply->IOCLogInfo)));
-
- pCfg->status = status;
- if (status == MPI_IOCSTATUS_SUCCESS) {
- if ((pReply->Header.PageType &
- MPI_CONFIG_PAGETYPE_MASK) ==
- MPI_CONFIG_PAGETYPE_EXTENDED) {
- pCfg->cfghdr.ehdr->ExtPageLength =
- le16_to_cpu(pReply->ExtPageLength);
- pCfg->cfghdr.ehdr->ExtPageType =
- pReply->ExtPageType;
- }
- pCfg->cfghdr.hdr->PageVersion = pReply->Header.PageVersion;
-
- /* If this is a regular header, save PageLength. */
- /* LMP Do this better so not using a reserved field! */
- pCfg->cfghdr.hdr->PageLength = pReply->Header.PageLength;
- pCfg->cfghdr.hdr->PageNumber = pReply->Header.PageNumber;
- pCfg->cfghdr.hdr->PageType = pReply->Header.PageType;
- }
- }
-
- /*
- * Wake up the original calling thread
- */
- pCfg->wait_done = 1;
- wake_up(&mpt_waitq);
+ if (event != MPI_EVENT_EVENT_CHANGE)
+ break;
+ case MPI_FUNCTION_CONFIG:
+ case MPI_FUNCTION_SAS_IO_UNIT_CONTROL:
+ ioc->mptbase_cmds.status |= MPT_MGMT_STATUS_COMMAND_GOOD;
+ if (reply) {
+ ioc->mptbase_cmds.status |= MPT_MGMT_STATUS_RF_VALID;
+ memcpy(ioc->mptbase_cmds.reply, reply,
+ min(MPT_DEFAULT_FRAME_SIZE,
+ 4 * reply->u.reply.MsgLength));
}
- } else if (func == MPI_FUNCTION_SAS_IO_UNIT_CONTROL) {
- /* we should be always getting a reply frame */
- memcpy(ioc->persist_reply_frame, reply,
- min(MPT_DEFAULT_FRAME_SIZE,
- 4*reply->u.reply.MsgLength));
- del_timer(&ioc->persist_timer);
- ioc->persist_wait_done = 1;
- wake_up(&mpt_waitq);
- } else {
- printk(MYIOC_s_ERR_FMT "Unexpected msg function (=%02Xh) reply received!\n",
- ioc->name, func);
+ if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_PENDING) {
+ ioc->mptbase_cmds.status &= ~MPT_MGMT_STATUS_PENDING;
+ complete(&ioc->mptbase_cmds.done);
+ } else
+ freereq = 0;
+ if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_FREE_MF)
+ freereq = 1;
+ break;
+ case MPI_FUNCTION_EVENT_ACK:
+ devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT
+ "EventAck reply received\n", ioc->name));
+ break;
+ default:
+ printk(MYIOC_s_ERR_FMT
+ "Unexpected msg function (=%02Xh) reply received!\n",
+ ioc->name, reply->u.hdr.Function);
+ break;
}
/*
@@ -988,17 +971,21 @@ mpt_free_msg_frame(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf)
/* Put Request back on FreeQ! */
spin_lock_irqsave(&ioc->FreeQlock, flags);
- mf->u.frame.linkage.arg1 = 0xdeadbeaf; /* signature to know if this mf is freed */
+ if (cpu_to_le32(mf->u.frame.linkage.arg1) == 0xdeadbeaf)
+ goto out;
+ /* signature to know if this mf is freed */
+ mf->u.frame.linkage.arg1 = cpu_to_le32(0xdeadbeaf);
list_add_tail(&mf->u.frame.linkage.list, &ioc->FreeQ);
#ifdef MFCNT
ioc->mfcnt--;
#endif
+ out:
spin_unlock_irqrestore(&ioc->FreeQlock, flags);
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
/**
- * mpt_add_sge - Place a simple SGE at address pAddr.
+ * mpt_add_sge - Place a simple 32 bit SGE at address pAddr.
* @pAddr: virtual address for SGE
* @flagslength: SGE flags and data transfer length
* @dma_addr: Physical address
@@ -1006,23 +993,117 @@ mpt_free_msg_frame(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf)
* This routine places a MPT request frame back on the MPT adapter's
* FreeQ.
*/
-void
-mpt_add_sge(char *pAddr, u32 flagslength, dma_addr_t dma_addr)
+static void
+mpt_add_sge(void *pAddr, u32 flagslength, dma_addr_t dma_addr)
{
- if (sizeof(dma_addr_t) == sizeof(u64)) {
- SGESimple64_t *pSge = (SGESimple64_t *) pAddr;
+ SGESimple32_t *pSge = (SGESimple32_t *) pAddr;
+ pSge->FlagsLength = cpu_to_le32(flagslength);
+ pSge->Address = cpu_to_le32(dma_addr);
+}
+
+/**
+ * mpt_add_sge_64bit - Place a simple 64 bit SGE at address pAddr.
+ * @pAddr: virtual address for SGE
+ * @flagslength: SGE flags and data transfer length
+ * @dma_addr: Physical address
+ *
+ * This routine places a MPT request frame back on the MPT adapter's
+ * FreeQ.
+ **/
+static void
+mpt_add_sge_64bit(void *pAddr, u32 flagslength, dma_addr_t dma_addr)
+{
+ SGESimple64_t *pSge = (SGESimple64_t *) pAddr;
+ pSge->Address.Low = cpu_to_le32
+ (lower_32_bits((unsigned long)(dma_addr)));
+ pSge->Address.High = cpu_to_le32
+ (upper_32_bits((unsigned long)dma_addr));
+ pSge->FlagsLength = cpu_to_le32
+ ((flagslength | MPT_SGE_FLAGS_64_BIT_ADDRESSING));
+}
+
+/**
+ * mpt_add_sge_64bit_1078 - Place a simple 64 bit SGE at address pAddr
+ * (1078 workaround).
+ * @pAddr: virtual address for SGE
+ * @flagslength: SGE flags and data transfer length
+ * @dma_addr: Physical address
+ *
+ * This routine places a MPT request frame back on the MPT adapter's
+ * FreeQ.
+ **/
+static void
+mpt_add_sge_64bit_1078(void *pAddr, u32 flagslength, dma_addr_t dma_addr)
+{
+ SGESimple64_t *pSge = (SGESimple64_t *) pAddr;
+ u32 tmp;
+
+ pSge->Address.Low = cpu_to_le32
+ (lower_32_bits((unsigned long)(dma_addr)));
+ tmp = (u32)(upper_32_bits((unsigned long)dma_addr));
+
+ /*
+ * 1078 errata workaround for the 36GB limitation
+ */
+ if ((((u64)dma_addr + MPI_SGE_LENGTH(flagslength)) >> 32) == 9) {
+ flagslength |=
+ MPI_SGE_SET_FLAGS(MPI_SGE_FLAGS_LOCAL_ADDRESS);
+ tmp |= (1<<31);
+ if (mpt_debug_level & MPT_DEBUG_36GB_MEM)
+ printk(KERN_DEBUG "1078 P0M2 addressing for "
+ "addr = 0x%llx len = %d\n",
+ (unsigned long long)dma_addr,
+ MPI_SGE_LENGTH(flagslength));
+ }
+
+ pSge->Address.High = cpu_to_le32(tmp);
+ pSge->FlagsLength = cpu_to_le32(
+ (flagslength | MPT_SGE_FLAGS_64_BIT_ADDRESSING));
+}
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/**
+ * mpt_add_chain - Place a 32 bit chain SGE at address pAddr.
+ * @pAddr: virtual address for SGE
+ * @next: nextChainOffset value (u32's)
+ * @length: length of next SGL segment
+ * @dma_addr: Physical address
+ *
+ */
+static void
+mpt_add_chain(void *pAddr, u8 next, u16 length, dma_addr_t dma_addr)
+{
+ SGEChain32_t *pChain = (SGEChain32_t *) pAddr;
+ pChain->Length = cpu_to_le16(length);
+ pChain->Flags = MPI_SGE_FLAGS_CHAIN_ELEMENT;
+ pChain->NextChainOffset = next;
+ pChain->Address = cpu_to_le32(dma_addr);
+}
+
+/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
+/**
+ * mpt_add_chain_64bit - Place a 64 bit chain SGE at address pAddr.
+ * @pAddr: virtual address for SGE
+ * @next: nextChainOffset value (u32's)
+ * @length: length of next SGL segment
+ * @dma_addr: Physical address
+ *
+ */
+static void
+mpt_add_chain_64bit(void *pAddr, u8 next, u16 length, dma_addr_t dma_addr)
+{
+ SGEChain64_t *pChain = (SGEChain64_t *) pAddr;
u32 tmp = dma_addr & 0xFFFFFFFF;
- pSge->FlagsLength = cpu_to_le32(flagslength);
- pSge->Address.Low = cpu_to_le32(tmp);
- tmp = (u32) ((u64)dma_addr >> 32);
- pSge->Address.High = cpu_to_le32(tmp);
+ pChain->Length = cpu_to_le16(length);
+ pChain->Flags = (MPI_SGE_FLAGS_CHAIN_ELEMENT |
+ MPI_SGE_FLAGS_64_BIT_ADDRESSING);
- } else {
- SGESimple32_t *pSge = (SGESimple32_t *) pAddr;
- pSge->FlagsLength = cpu_to_le32(flagslength);
- pSge->Address = cpu_to_le32(dma_addr);
- }
+ pChain->NextChainOffset = next;
+
+ pChain->Address.Low = cpu_to_le32(tmp);
+ tmp = (u32)(upper_32_bits((unsigned long)dma_addr));
+ pChain->Address.High = cpu_to_le32(tmp);
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
@@ -1225,7 +1306,7 @@ mpt_host_page_alloc(MPT_ADAPTER *ioc, pIOCInit_t ioc_init)
}
flags_length = flags_length << MPI_SGE_FLAGS_SHIFT;
flags_length |= ioc->HostPageBuffer_sz;
- mpt_add_sge(psge, flags_length, ioc->HostPageBuffer_dma);
+ ioc->add_sge(psge, flags_length, ioc->HostPageBuffer_dma);
ioc->facts.HostPageBufferSGE = ioc_init->HostPageBufferSGE;
return 0;
@@ -1534,21 +1615,42 @@ mpt_mapresources(MPT_ADAPTER *ioc)
pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
- if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))
- && !pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64))) {
- dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
- ": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
- ioc->name));
- } else if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
- && !pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32))) {
- dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
- ": 32 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
- ioc->name));
+ if (sizeof(dma_addr_t) > 4) {
+ const uint64_t required_mask = dma_get_required_mask
+ (&pdev->dev);
+ if (required_mask > DMA_BIT_MASK(32)
+ && !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))
+ && !pci_set_consistent_dma_mask(pdev,
+ DMA_BIT_MASK(64))) {
+ ioc->dma_mask = DMA_BIT_MASK(64);
+ dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
+ ": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
+ ioc->name));
+ } else if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
+ && !pci_set_consistent_dma_mask(pdev,
+ DMA_BIT_MASK(32))) {
+ ioc->dma_mask = DMA_BIT_MASK(32);
+ dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
+ ": 32 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
+ ioc->name));
+ } else {
+ printk(MYIOC_s_WARN_FMT "no suitable DMA mask for %s\n",
+ ioc->name, pci_name(pdev));
+ return r;
+ }
} else {
- printk(MYIOC_s_WARN_FMT "no suitable DMA mask for %s\n",
- ioc->name, pci_name(pdev));
- pci_release_selected_regions(pdev, ioc->bars);
- return r;
+ if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))
+ && !pci_set_consistent_dma_mask(pdev,
+ DMA_BIT_MASK(32))) {
+ ioc->dma_mask = DMA_BIT_MASK(32);
+ dinitprintk(ioc, printk(MYIOC_s_INFO_FMT
+ ": 32 BIT PCI BUS DMA ADDRESSING SUPPORTED\n",
+ ioc->name));
+ } else {
+ printk(MYIOC_s_WARN_FMT "no suitable DMA mask for %s\n",
+ ioc->name, pci_name(pdev));
+ return r;
+ }
}
mem_phys = msize = 0;
@@ -1632,6 +1734,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
ioc->id = mpt_ids++;
sprintf(ioc->name, "ioc%d", ioc->id);
+ dinitprintk(ioc, printk(KERN_WARNING MYNAM ": mpt_adapter_install\n"));
/*
* set initial debug level
@@ -1650,14 +1753,36 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
return r;
}
+ /*
+ * Setting up proper handlers for scatter gather handling
+ */
+ if (ioc->dma_mask == DMA_BIT_MASK(64)) {
+ if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1078)
+ ioc->add_sge = &mpt_add_sge_64bit_1078;
+ else
+ ioc->add_sge = &mpt_add_sge_64bit;
+ ioc->add_chain = &mpt_add_chain_64bit;
+ ioc->sg_addr_size = 8;
+ } else {
+ ioc->add_sge = &mpt_add_sge;
+ ioc->add_chain = &mpt_add_chain;
+ ioc->sg_addr_size = 4;
+ }
+ ioc->SGE_size = sizeof(u32) + ioc->sg_addr_size;
+
ioc->alloc_total = sizeof(MPT_ADAPTER);
ioc->req_sz = MPT_DEFAULT_FRAME_SIZE; /* avoid div by zero! */
ioc->reply_sz = MPT_REPLY_FRAME_SIZE;
ioc->pcidev = pdev;
- ioc->diagPending = 0;
- spin_lock_init(&ioc->diagLock);
- spin_lock_init(&ioc->initializing_hba_lock);
+
+ spin_lock_init(&ioc->taskmgmt_lock);
+ mutex_init(&ioc->internal_cmds.mutex);

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptbase.h

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptctl.c

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptdebug.h

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptfc.c

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptsas.c

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptsas.h

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptscsih.c

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptscsih.h

View file

This diff is incomplete. Download the complete patch.

drivers/message/fusion/mptspi.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/net/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/net/bnx2.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/bnx2.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/cnic.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/cnic.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/cnic_defs.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/cnic_if.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_ccw.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_dbf.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_def.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_erp.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_ext.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_fc.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_fsf.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/scsi/zfcp_scsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/NCR_D700.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/57xx_iscsi_constants.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/57xx_iscsi_hsi.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/bnx2i.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/bnx2i_hwi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/bnx2i_init.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/bnx2i_iscsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/bnx2i/bnx2i_sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/cxgb3i/cxgb3i.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/cxgb3i/cxgb3i_iscsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/cxgb3i/cxgb3i_offload.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/cxgb3i/cxgb3i_offload.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/device_handler/scsi_dh_rdac.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/fcoe/fcoe.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/fcoe/fcoe.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/fcoe/libfcoe.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/fnic/fnic_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/gdth_proc.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/ibmvscsi/ibmvfc.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/ibmvscsi/ibmvfc.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/ibmvscsi/ibmvscsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/ibmvscsi/ibmvscsi.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/ibmvscsi/viosrp.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/ipr.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/libfc/fc_exch.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/libfc/fc_fcp.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/libfc/fc_rport.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/libiscsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/libiscsi_tcp.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_attr.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_crtn.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_ct.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_debugfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_disc.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_els.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_hbadisc.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_hw.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_hw4.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_init.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_logmsg.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_mbox.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_mem.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_nportdisc.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_scsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_scsi.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_sli.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_sli.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_sli4.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_version.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/lpfc/lpfc_vport.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mpt2sas/mpt2sas_base.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mpt2sas/mpt2sas_ctl.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mpt2sas/mpt2sas_scsih.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mpt2sas/mpt2sas_transport.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_64xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_64xx.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_94xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_94xx.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_chips.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_defs.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_init.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_sas.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mvsas/mv_sas.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/osd/Kbuild

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/osd/Makefile

View before deletion

This diff is incomplete. Download the complete patch.

drivers/scsi/osd/osd_initiator.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/osd/osd_uld.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla1280.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla1280.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_attr.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_dbg.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_def.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_fw.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_gbl.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_gs.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_init.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_iocb.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_isr.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_mbx.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_mid.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_os.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_sup.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/qla2xxx/qla_version.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_debug.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_error.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_lib.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_scan.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_transport_iscsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sd.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/st.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sym53c8xx_2/sym_glue.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sym53c8xx_2/sym_hipd.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sym53c8xx_2/sym_hipd.h

View file

This diff is incomplete. Download the complete patch.

fs/exofs/common.h

View file

This diff is incomplete. Download the complete patch.

fs/exofs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/exofs/osd.c

View file

This diff is incomplete. Download the complete patch.

include/linux/if_ether.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/fc/fc_fip.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/iscsi_if.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/libfc.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/libiscsi.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/osd_attributes.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/osd_initiator.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/osd_protocol.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/scsi_transport_iscsi.h

View file

This diff is incomplete. Download the complete patch.