mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
This commit is contained in:
commit
f61ea1b0c8
95 changed files with 17446 additions and 4471 deletions
|
|
@ -313,13 +313,13 @@ mpt_reply(MPT_ADAPTER *ioc, u32 pa)
|
|||
u32 log_info = le32_to_cpu(mr->u.reply.IOCLogInfo);
|
||||
if (ioc->bus_type == FC)
|
||||
mpt_fc_log_info(ioc, log_info);
|
||||
else if (ioc->bus_type == SCSI)
|
||||
else if (ioc->bus_type == SPI)
|
||||
mpt_sp_log_info(ioc, log_info);
|
||||
else if (ioc->bus_type == SAS)
|
||||
mpt_sas_log_info(ioc, log_info);
|
||||
}
|
||||
if (ioc_stat & MPI_IOCSTATUS_MASK) {
|
||||
if (ioc->bus_type == SCSI &&
|
||||
if (ioc->bus_type == SPI &&
|
||||
cb_idx != mpt_stm_index &&
|
||||
cb_idx != mpt_lan_index)
|
||||
mpt_sp_ioc_info(ioc, (u32)ioc_stat, mf);
|
||||
|
|
@ -1376,7 +1376,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
}
|
||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_53C1030) {
|
||||
ioc->prod_name = "LSI53C1030";
|
||||
ioc->bus_type = SCSI;
|
||||
ioc->bus_type = SPI;
|
||||
/* 1030 Chip Fix. Disable Split transactions
|
||||
* for PCIX. Set MOST bits to zero if Rev < C0( = 8).
|
||||
*/
|
||||
|
|
@ -1389,7 +1389,7 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
}
|
||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_1030_53C1035) {
|
||||
ioc->prod_name = "LSI53C1035";
|
||||
ioc->bus_type = SCSI;
|
||||
ioc->bus_type = SPI;
|
||||
}
|
||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_SAS1064) {
|
||||
ioc->prod_name = "LSISAS1064";
|
||||
|
|
@ -3042,7 +3042,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, MpiFwHeader_t *pFwHeader, int sleepFlag)
|
|||
/* Clear the internal flash bad bit - autoincrementing register,
|
||||
* so must do two writes.
|
||||
*/
|
||||
if (ioc->bus_type == SCSI) {
|
||||
if (ioc->bus_type == SPI) {
|
||||
/*
|
||||
* 1030 and 1035 H/W errata, workaround to access
|
||||
* the ClearFlashBadSignatureBit
|
||||
|
|
@ -3152,7 +3152,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
|
|||
int cnt,cntdn;
|
||||
|
||||
dinitprintk((KERN_WARNING MYNAM ": KickStarting %s!\n", ioc->name));
|
||||
if (ioc->bus_type == SCSI) {
|
||||
if (ioc->bus_type == SPI) {
|
||||
/* Always issue a Msg Unit Reset first. This will clear some
|
||||
* SCSI bus hang conditions.
|
||||
*/
|
||||
|
|
@ -3580,7 +3580,7 @@ initChainBuffers(MPT_ADAPTER *ioc)
|
|||
dinitprintk((KERN_INFO MYNAM ": %s Now numSGE=%d num_sge=%d num_chain=%d\n",
|
||||
ioc->name, numSGE, num_sge, num_chain));
|
||||
|
||||
if (ioc->bus_type == SCSI)
|
||||
if (ioc->bus_type == SPI)
|
||||
num_chain *= MPT_SCSI_CAN_QUEUE;
|
||||
else
|
||||
num_chain *= MPT_FC_CAN_QUEUE;
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@
|
|||
#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR
|
||||
#endif
|
||||
|
||||
#define MPT_LINUX_VERSION_COMMON "3.03.04"
|
||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.04"
|
||||
#define MPT_LINUX_VERSION_COMMON "3.03.05"
|
||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.05"
|
||||
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
|
||||
|
||||
#define show_mptmod_ver(s,ver) \
|
||||
|
|
@ -321,7 +321,7 @@ typedef struct _SYSIF_REGS
|
|||
* Dynamic Multi-Pathing specific stuff...
|
||||
*/
|
||||
|
||||
/* VirtDevice negoFlags field */
|
||||
/* VirtTarget negoFlags field */
|
||||
#define MPT_TARGET_NO_NEGO_WIDE 0x01
|
||||
#define MPT_TARGET_NO_NEGO_SYNC 0x02
|
||||
#define MPT_TARGET_NO_NEGO_QAS 0x04
|
||||
|
|
@ -330,8 +330,7 @@ typedef struct _SYSIF_REGS
|
|||
/*
|
||||
* VirtDevice - FC LUN device or SCSI target device
|
||||
*/
|
||||
typedef struct _VirtDevice {
|
||||
struct scsi_device *device;
|
||||
typedef struct _VirtTarget {
|
||||
u8 tflags;
|
||||
u8 ioc_id;
|
||||
u8 target_id;
|
||||
|
|
@ -342,21 +341,18 @@ typedef struct _VirtDevice {
|
|||
u8 negoFlags; /* bit field, see above */
|
||||
u8 raidVolume; /* set, if RAID Volume */
|
||||
u8 type; /* byte 0 of Inquiry data */
|
||||
u8 cflags; /* controller flags */
|
||||
u8 rsvd1raid;
|
||||
u16 fc_phys_lun;
|
||||
u16 fc_xlat_lun;
|
||||
u32 num_luns;
|
||||
u32 luns[8]; /* Max LUNs is 256 */
|
||||
u8 pad[4];
|
||||
u8 inq_data[8];
|
||||
/* IEEE Registered Extended Identifier
|
||||
obtained via INQUIRY VPD page 0x83 */
|
||||
/* NOTE: Do not separate uniq_prepad and uniq_data
|
||||
as they are treateed as a single entity in the code */
|
||||
u8 uniq_prepad[8];
|
||||
u8 uniq_data[20];
|
||||
u8 pad2[4];
|
||||
} VirtTarget;
|
||||
|
||||
typedef struct _VirtDevice {
|
||||
VirtTarget *vtarget;
|
||||
u8 ioc_id;
|
||||
u8 bus_id;
|
||||
u8 target_id;
|
||||
u8 configured_lun;
|
||||
u32 lun;
|
||||
} VirtDevice;
|
||||
|
||||
/*
|
||||
|
|
@ -903,7 +899,7 @@ typedef struct _MPT_LOCAL_REPLY {
|
|||
|
||||
typedef enum {
|
||||
FC,
|
||||
SCSI,
|
||||
SPI,
|
||||
SAS
|
||||
} BUS_TYPE;
|
||||
|
||||
|
|
@ -912,7 +908,7 @@ typedef struct _MPT_SCSI_HOST {
|
|||
int port;
|
||||
u32 pad0;
|
||||
struct scsi_cmnd **ScsiLookup;
|
||||
VirtDevice **Targets;
|
||||
VirtTarget **Targets;
|
||||
MPT_LOCAL_REPLY *pLocal; /* used for internal commands */
|
||||
struct timer_list timer;
|
||||
/* Pool of memory for holding SCpnts before doing
|
||||
|
|
|
|||
|
|
@ -1245,7 +1245,7 @@ mptctl_gettargetinfo (unsigned long arg)
|
|||
MPT_ADAPTER *ioc;
|
||||
struct Scsi_Host *sh;
|
||||
MPT_SCSI_HOST *hd;
|
||||
VirtDevice *vdev;
|
||||
VirtTarget *vdev;
|
||||
char *pmem;
|
||||
int *pdata;
|
||||
IOCPage2_t *pIoc2;
|
||||
|
|
@ -1822,7 +1822,7 @@ mptctl_do_mpt_command (struct mpt_ioctl_command karg, void __user *mfPtr)
|
|||
case MPI_FUNCTION_SCSI_IO_REQUEST:
|
||||
if (ioc->sh) {
|
||||
SCSIIORequest_t *pScsiReq = (SCSIIORequest_t *) mf;
|
||||
VirtDevice *pTarget = NULL;
|
||||
VirtTarget *pTarget = NULL;
|
||||
MPT_SCSI_HOST *hd = NULL;
|
||||
int qtag = MPI_SCSIIO_CONTROL_UNTAGGED;
|
||||
int scsidir = 0;
|
||||
|
|
|
|||
|
|
@ -84,13 +84,16 @@ static int mptfcTaskCtx = -1;
|
|||
static int mptfcInternalCtx = -1; /* Used only for internal commands */
|
||||
|
||||
static struct scsi_host_template mptfc_driver_template = {
|
||||
.module = THIS_MODULE,
|
||||
.proc_name = "mptfc",
|
||||
.proc_info = mptscsih_proc_info,
|
||||
.name = "MPT FC Host",
|
||||
.info = mptscsih_info,
|
||||
.queuecommand = mptscsih_qcmd,
|
||||
.target_alloc = mptscsih_target_alloc,
|
||||
.slave_alloc = mptscsih_slave_alloc,
|
||||
.slave_configure = mptscsih_slave_configure,
|
||||
.target_destroy = mptscsih_target_destroy,
|
||||
.slave_destroy = mptscsih_slave_destroy,
|
||||
.change_queue_depth = mptscsih_change_queue_depth,
|
||||
.eh_abort_handler = mptscsih_abort,
|
||||
|
|
@ -167,13 +170,15 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping because it's not operational!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
error = -ENODEV;
|
||||
goto out_mptfc_probe;
|
||||
}
|
||||
|
||||
if (!ioc->active) {
|
||||
printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
error = -ENODEV;
|
||||
goto out_mptfc_probe;
|
||||
}
|
||||
|
||||
/* Sanity check - ensure at least 1 port is INITIATOR capable
|
||||
|
|
@ -198,7 +203,8 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
printk(MYIOC_s_WARN_FMT
|
||||
"Unable to register controller with SCSI subsystem\n",
|
||||
ioc->name);
|
||||
return -1;
|
||||
error = -1;
|
||||
goto out_mptfc_probe;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&ioc->FreeQlock, flags);
|
||||
|
|
@ -266,7 +272,7 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptfc_probe_failed;
|
||||
goto out_mptfc_probe;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
|
|
@ -284,14 +290,14 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptfc_probe_failed;
|
||||
goto out_mptfc_probe;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->Targets = (VirtDevice **) mem;
|
||||
hd->Targets = (VirtTarget **) mem;
|
||||
|
||||
dprintk((KERN_INFO
|
||||
" Targets @ %p, sz=%d\n", hd->Targets, sz));
|
||||
" vdev @ %p, sz=%d\n", hd->Targets, sz));
|
||||
|
||||
/* Clear the TM flags
|
||||
*/
|
||||
|
|
@ -330,13 +336,13 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
if(error) {
|
||||
dprintk((KERN_ERR MYNAM
|
||||
"scsi_add_host failed\n"));
|
||||
goto mptfc_probe_failed;
|
||||
goto out_mptfc_probe;
|
||||
}
|
||||
|
||||
scsi_scan_host(sh);
|
||||
return 0;
|
||||
|
||||
mptfc_probe_failed:
|
||||
out_mptfc_probe:
|
||||
|
||||
mptscsih_remove(pdev);
|
||||
return error;
|
||||
|
|
|
|||
|
|
@ -228,31 +228,35 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
|
|||
* implement ->target_alloc.
|
||||
*/
|
||||
static int
|
||||
mptsas_slave_alloc(struct scsi_device *device)
|
||||
mptsas_slave_alloc(struct scsi_device *sdev)
|
||||
{
|
||||
struct Scsi_Host *host = device->host;
|
||||
struct Scsi_Host *host = sdev->host;
|
||||
MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *)host->hostdata;
|
||||
struct sas_rphy *rphy;
|
||||
struct mptsas_portinfo *p;
|
||||
VirtTarget *vtarget;
|
||||
VirtDevice *vdev;
|
||||
uint target = device->id;
|
||||
struct scsi_target *starget;
|
||||
int i;
|
||||
|
||||
if ((vdev = hd->Targets[target]) != NULL)
|
||||
goto out;
|
||||
|
||||
vdev = kmalloc(sizeof(VirtDevice), GFP_KERNEL);
|
||||
if (!vdev) {
|
||||
printk(MYIOC_s_ERR_FMT "slave_alloc kmalloc(%zd) FAILED!\n",
|
||||
hd->ioc->name, sizeof(VirtDevice));
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(vdev, 0, sizeof(VirtDevice));
|
||||
vdev->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
|
||||
vdev->ioc_id = hd->ioc->id;
|
||||
sdev->hostdata = vdev;
|
||||
starget = scsi_target(sdev);
|
||||
vtarget = starget->hostdata;
|
||||
vdev->vtarget = vtarget;
|
||||
if (vtarget->num_luns == 0) {
|
||||
vtarget->tflags = MPT_TARGET_FLAGS_Q_YES|MPT_TARGET_FLAGS_VALID_INQUIRY;
|
||||
hd->Targets[sdev->id] = vtarget;
|
||||
}
|
||||
|
||||
rphy = dev_to_rphy(device->sdev_target->dev.parent);
|
||||
rphy = dev_to_rphy(sdev->sdev_target->dev.parent);
|
||||
list_for_each_entry(p, &hd->ioc->sas_topology, list) {
|
||||
for (i = 0; i < p->num_phys; i++) {
|
||||
if (p->phy_info[i].attached.sas_address ==
|
||||
|
|
@ -260,7 +264,7 @@ mptsas_slave_alloc(struct scsi_device *device)
|
|||
vdev->target_id =
|
||||
p->phy_info[i].attached.target;
|
||||
vdev->bus_id = p->phy_info[i].attached.bus;
|
||||
hd->Targets[device->id] = vdev;
|
||||
vdev->lun = sdev->lun;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
|
@ -271,19 +275,24 @@ mptsas_slave_alloc(struct scsi_device *device)
|
|||
return -ENODEV;
|
||||
|
||||
out:
|
||||
vdev->num_luns++;
|
||||
device->hostdata = vdev;
|
||||
vtarget->ioc_id = vdev->ioc_id;
|
||||
vtarget->target_id = vdev->target_id;
|
||||
vtarget->bus_id = vdev->bus_id;
|
||||
vtarget->num_luns++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct scsi_host_template mptsas_driver_template = {
|
||||
.module = THIS_MODULE,
|
||||
.proc_name = "mptsas",
|
||||
.proc_info = mptscsih_proc_info,
|
||||
.name = "MPT SPI Host",
|
||||
.info = mptscsih_info,
|
||||
.queuecommand = mptscsih_qcmd,
|
||||
.target_alloc = mptscsih_target_alloc,
|
||||
.slave_alloc = mptsas_slave_alloc,
|
||||
.slave_configure = mptscsih_slave_configure,
|
||||
.target_destroy = mptscsih_target_destroy,
|
||||
.slave_destroy = mptscsih_slave_destroy,
|
||||
.change_queue_depth = mptscsih_change_queue_depth,
|
||||
.eh_abort_handler = mptscsih_abort,
|
||||
|
|
@ -986,7 +995,6 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
|
|||
goto out_free_port_info;
|
||||
|
||||
list_add_tail(&port_info->list, &ioc->sas_topology);
|
||||
|
||||
for (i = 0; i < port_info->num_phys; i++) {
|
||||
mptsas_sas_phy_pg0(ioc, &port_info->phy_info[i],
|
||||
(MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER <<
|
||||
|
|
@ -1133,13 +1141,15 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping because it's not operational!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
error = -ENODEV;
|
||||
goto out_mptsas_probe;
|
||||
}
|
||||
|
||||
if (!ioc->active) {
|
||||
printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
error = -ENODEV;
|
||||
goto out_mptsas_probe;
|
||||
}
|
||||
|
||||
/* Sanity check - ensure at least 1 port is INITIATOR capable
|
||||
|
|
@ -1163,7 +1173,8 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
printk(MYIOC_s_WARN_FMT
|
||||
"Unable to register controller with SCSI subsystem\n",
|
||||
ioc->name);
|
||||
return -1;
|
||||
error = -1;
|
||||
goto out_mptsas_probe;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&ioc->FreeQlock, flags);
|
||||
|
|
@ -1237,7 +1248,7 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptsas_probe_failed;
|
||||
goto out_mptsas_probe;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
|
|
@ -1255,14 +1266,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptsas_probe_failed;
|
||||
goto out_mptsas_probe;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->Targets = (VirtDevice **) mem;
|
||||
hd->Targets = (VirtTarget **) mem;
|
||||
|
||||
dprintk((KERN_INFO
|
||||
" Targets @ %p, sz=%d\n", hd->Targets, sz));
|
||||
" vtarget @ %p, sz=%d\n", hd->Targets, sz));
|
||||
|
||||
/* Clear the TM flags
|
||||
*/
|
||||
|
|
@ -1308,14 +1319,14 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
if (error) {
|
||||
dprintk((KERN_ERR MYNAM
|
||||
"scsi_add_host failed\n"));
|
||||
goto mptsas_probe_failed;
|
||||
goto out_mptsas_probe;
|
||||
}
|
||||
|
||||
mptsas_scan_sas_topology(ioc);
|
||||
|
||||
return 0;
|
||||
|
||||
mptsas_probe_failed:
|
||||
out_mptsas_probe:
|
||||
|
||||
mptscsih_remove(pdev);
|
||||
return error;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -91,7 +91,9 @@ extern int mptscsih_resume(struct pci_dev *pdev);
|
|||
extern int mptscsih_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int func);
|
||||
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
|
||||
extern int mptscsih_target_alloc(struct scsi_target *starget);
|
||||
extern int mptscsih_slave_alloc(struct scsi_device *device);
|
||||
extern void mptscsih_target_destroy(struct scsi_target *starget);
|
||||
extern void mptscsih_slave_destroy(struct scsi_device *device);
|
||||
extern int mptscsih_slave_configure(struct scsi_device *device);
|
||||
extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
|
||||
|
|
|
|||
|
|
@ -103,13 +103,16 @@ static int mptspiTaskCtx = -1;
|
|||
static int mptspiInternalCtx = -1; /* Used only for internal commands */
|
||||
|
||||
static struct scsi_host_template mptspi_driver_template = {
|
||||
.module = THIS_MODULE,
|
||||
.proc_name = "mptspi",
|
||||
.proc_info = mptscsih_proc_info,
|
||||
.name = "MPT SPI Host",
|
||||
.info = mptscsih_info,
|
||||
.queuecommand = mptscsih_qcmd,
|
||||
.target_alloc = mptscsih_target_alloc,
|
||||
.slave_alloc = mptscsih_slave_alloc,
|
||||
.slave_configure = mptscsih_slave_configure,
|
||||
.target_destroy = mptscsih_target_destroy,
|
||||
.slave_destroy = mptscsih_slave_destroy,
|
||||
.change_queue_depth = mptscsih_change_queue_depth,
|
||||
.eh_abort_handler = mptscsih_abort,
|
||||
|
|
@ -177,13 +180,15 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping because it's not operational!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
error = -ENODEV;
|
||||
goto out_mptspi_probe;
|
||||
}
|
||||
|
||||
if (!ioc->active) {
|
||||
printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
error = -ENODEV;
|
||||
goto out_mptspi_probe;
|
||||
}
|
||||
|
||||
/* Sanity check - ensure at least 1 port is INITIATOR capable
|
||||
|
|
@ -208,7 +213,8 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
printk(MYIOC_s_WARN_FMT
|
||||
"Unable to register controller with SCSI subsystem\n",
|
||||
ioc->name);
|
||||
return -1;
|
||||
error = -1;
|
||||
goto out_mptspi_probe;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&ioc->FreeQlock, flags);
|
||||
|
|
@ -286,7 +292,7 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptspi_probe_failed;
|
||||
goto out_mptspi_probe;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
|
|
@ -304,14 +310,14 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptspi_probe_failed;
|
||||
goto out_mptspi_probe;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->Targets = (VirtDevice **) mem;
|
||||
hd->Targets = (VirtTarget **) mem;
|
||||
|
||||
dprintk((KERN_INFO
|
||||
" Targets @ %p, sz=%d\n", hd->Targets, sz));
|
||||
" vdev @ %p, sz=%d\n", hd->Targets, sz));
|
||||
|
||||
/* Clear the TM flags
|
||||
*/
|
||||
|
|
@ -385,13 +391,13 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
if(error) {
|
||||
dprintk((KERN_ERR MYNAM
|
||||
"scsi_add_host failed\n"));
|
||||
goto mptspi_probe_failed;
|
||||
goto out_mptspi_probe;
|
||||
}
|
||||
|
||||
scsi_scan_host(sh);
|
||||
return 0;
|
||||
|
||||
mptspi_probe_failed:
|
||||
out_mptspi_probe:
|
||||
|
||||
mptscsih_remove(pdev);
|
||||
return error;
|
||||
|
|
|
|||
Loading…
Reference in a new issue