Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
4c244d1a
Commit
4c244d1a
authored
Dec 09, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://linux-scsi.bkbits.net/scsi-for-linus-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
821bc517
77340725
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
292 additions
and
671 deletions
+292
-671
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptbase.c
+22
-61
drivers/message/fusion/mptbase.h
drivers/message/fusion/mptbase.h
+9
-27
drivers/message/fusion/mptctl.c
drivers/message/fusion/mptctl.c
+4
-4
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptscsih.c
+163
-472
drivers/message/fusion/mptscsih.h
drivers/message/fusion/mptscsih.h
+1
-10
drivers/s390/scsi/zfcp_def.h
drivers/s390/scsi/zfcp_def.h
+2
-2
drivers/s390/scsi/zfcp_erp.c
drivers/s390/scsi/zfcp_erp.c
+18
-20
drivers/s390/scsi/zfcp_ext.h
drivers/s390/scsi/zfcp_ext.h
+2
-2
drivers/s390/scsi/zfcp_fsf.c
drivers/s390/scsi/zfcp_fsf.c
+4
-49
drivers/s390/scsi/zfcp_scsi.c
drivers/s390/scsi/zfcp_scsi.c
+1
-2
drivers/scsi/Kconfig
drivers/scsi/Kconfig
+1
-1
drivers/scsi/aacraid/aachba.c
drivers/scsi/aacraid/aachba.c
+43
-3
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/aacraid.h
+3
-0
drivers/scsi/aic7xxx/aic79xx_osm.h
drivers/scsi/aic7xxx/aic79xx_osm.h
+1
-1
drivers/scsi/aic7xxx/aic79xx_osm_pci.c
drivers/scsi/aic7xxx/aic79xx_osm_pci.c
+6
-8
drivers/scsi/aic7xxx/aic7xxx_osm.h
drivers/scsi/aic7xxx/aic7xxx_osm.h
+1
-1
drivers/scsi/aic7xxx/aic7xxx_osm_pci.c
drivers/scsi/aic7xxx/aic7xxx_osm_pci.c
+3
-4
drivers/scsi/scsi_devinfo.c
drivers/scsi/scsi_devinfo.c
+1
-0
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_lib.c
+1
-1
drivers/scsi/scsi_transport_spi.c
drivers/scsi/scsi_transport_spi.c
+6
-3
No files found.
drivers/message/fusion/mptbase.c
View file @
4c244d1a
...
...
@@ -155,7 +155,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
int
FusionInitCalled
=
0
;
static
int
mpt_base_index
=
-
1
;
static
int
last_drv_idx
=
-
1
;
...
...
@@ -337,15 +336,13 @@ mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
ioc_stat
=
le16_to_cpu
(
mr
->
u
.
reply
.
IOCStatus
);
if
(
ioc_stat
&
MPI_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE
)
{
u32
log_info
=
le32_to_cpu
(
mr
->
u
.
reply
.
IOCLogInfo
);
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
if
(
ioc
->
bus_type
==
FC
)
mpt_fc_log_info
(
ioc
,
log_info
);
else
else
if
(
ioc
->
bus_type
==
SCSI
)
mpt_sp_log_info
(
ioc
,
log_info
);
}
if
(
ioc_stat
&
MPI_IOCSTATUS_MASK
)
{
if
((
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
;
else
if
(
ioc
->
bus_type
==
SCSI
)
mpt_sp_ioc_info
(
ioc
,
(
u32
)
ioc_stat
,
mf
);
}
}
else
{
...
...
@@ -392,7 +389,7 @@ mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
}
#ifdef MPT_DEBUG_IRQ
if
(
(
int
)
ioc
->
chip_type
>
(
int
)
FC929
)
{
if
(
ioc
->
bus_type
==
SCSI
)
{
/* Verify mf, mr are reasonable.
*/
if
((
mf
)
&&
((
mf
>=
MPT_INDEX_2_MFPTR
(
ioc
,
ioc
->
req_depth
))
...
...
@@ -603,22 +600,6 @@ mpt_register(MPT_CALLBACK cbfunc, MPT_DRIVER_CLASS dclass)
last_drv_idx
=
-
1
;
#ifndef MODULE
/*
* Handle possibility of the mptscsih_detect() routine getting
* called *before* fusion_init!
*/
if
(
!
FusionInitCalled
)
{
dprintk
((
KERN_INFO
MYNAM
": Hmmm, calling fusion_init from mpt_register!
\n
"
));
/*
* NOTE! We'll get recursion here, as fusion_init()
* calls mpt_register()!
*/
fusion_init
();
FusionInitCalled
++
;
}
#endif
/*
* Search for empty callback slot in this order: {N,...,7,6,5,...,1}
* (slot/handle 0 is reserved!)
...
...
@@ -1220,22 +1201,21 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
ioc
->
pio_chip
=
(
SYSIF_REGS
__iomem
*
)
pmem
;
}
ioc
->
chip_type
=
FCUNK
;
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVICEID_FC909
)
{
ioc
->
chip_type
=
FC909
;
ioc
->
prod_name
=
"LSIFC909"
;
ioc
->
bus_type
=
FC
;
}
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVICEID_FC929
)
{
ioc
->
chip_type
=
FC929
;
ioc
->
prod_name
=
"LSIFC929"
;
ioc
->
bus_type
=
FC
;
}
else
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVICEID_FC919
)
{
ioc
->
chip_type
=
FC919
;
ioc
->
prod_name
=
"LSIFC919"
;
ioc
->
bus_type
=
FC
;
}
else
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVICEID_FC929X
)
{
ioc
->
chip_type
=
FC929X
;
pci_read_config_byte
(
pdev
,
PCI_CLASS_REVISION
,
&
revision
);
ioc
->
bus_type
=
FC
;
if
(
revision
<
XL_929
)
{
ioc
->
prod_name
=
"LSIFC929X"
;
/* 929X Chip Fix. Set Split transactions level
...
...
@@ -1254,8 +1234,8 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
}
}
else
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVICEID_FC919X
)
{
ioc
->
chip_type
=
FC919X
;
ioc
->
prod_name
=
"LSIFC919X"
;
ioc
->
bus_type
=
FC
;
/* 919X Chip Fix. Set Split transactions level
* for PCIX. Set MOST bits to zero.
*/
...
...
@@ -1264,8 +1244,8 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
pci_write_config_byte
(
pdev
,
0x6a
,
pcixcmd
);
}
else
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVID_53C1030
)
{
ioc
->
chip_type
=
C1030
;
ioc
->
prod_name
=
"LSI53C1030"
;
ioc
->
bus_type
=
SCSI
;
/* 1030 Chip Fix. Disable Split transactions
* for PCIX. Set MOST bits to zero if Rev < C0( = 8).
*/
...
...
@@ -1277,8 +1257,8 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
}
}
else
if
(
pdev
->
device
==
MPI_MANUFACTPAGE_DEVID_1030_53C1035
)
{
ioc
->
chip_type
=
C1035
;
ioc
->
prod_name
=
"LSI53C1035"
;
ioc
->
bus_type
=
SCSI
;
}
sprintf
(
ioc
->
name
,
"ioc%d"
,
ioc
->
id
);
...
...
@@ -1326,9 +1306,7 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
/* NEW! 20010220 -sralston
* Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets.
*/
if
((
ioc
->
chip_type
==
FC929
)
||
(
ioc
->
chip_type
==
C1030
)
||
(
ioc
->
chip_type
==
C1035
)
||
(
ioc
->
chip_type
==
FC929X
))
mpt_detect_bound_ports
(
ioc
,
pdev
);
mpt_detect_bound_ports
(
ioc
,
pdev
);
if
((
r
=
mpt_do_ioc_recovery
(
ioc
,
MPT_HOSTEVENT_IOC_BRINGUP
,
CAN_SLEEP
))
!=
0
)
{
...
...
@@ -1760,7 +1738,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
* and we try GetLanConfigPages again...
*/
if
((
ret
==
0
)
&&
(
reason
==
MPT_HOSTEVENT_IOC_BRINGUP
))
{
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
{
if
(
ioc
->
bus_type
==
FC
)
{
/*
* Pre-fetch FC port WWN and stuff...
* (FCPortPage0_t stuff)
...
...
@@ -2103,20 +2081,8 @@ MakeIocReady(MPT_ADAPTER *ioc, int force, int sleepFlag)
}
/* Is it already READY? */
if
(
!
statefault
&&
(
ioc_state
&
MPI_IOC_STATE_MASK
)
==
MPI_IOC_STATE_READY
)
{
if
((
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
return
0
;
else
{
return
0
;
/* Workaround from broken 1030 FW.
* Force a diagnostic reset if fails.
*/
/* if ((r = SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, sleepFlag)) == 0)
return 0;
else
statefault = 4; */
}
}
if
(
!
statefault
&&
(
ioc_state
&
MPI_IOC_STATE_MASK
)
==
MPI_IOC_STATE_READY
)
return
0
;
/*
* Check to see if IOC is in FAULT state.
...
...
@@ -2513,11 +2479,11 @@ SendIocInit(MPT_ADAPTER *ioc, int sleepFlag)
ddlprintk
((
MYIOC_s_INFO_FMT
"upload_fw %d facts.Flags=%x
\n
"
,
ioc
->
name
,
ioc
->
upload_fw
,
ioc
->
facts
.
Flags
));
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
{
if
(
ioc
->
bus_type
==
FC
)
ioc_init
.
MaxDevices
=
MPT_MAX_FC_DEVICES
;
}
else
{
else
ioc_init
.
MaxDevices
=
MPT_MAX_SCSI_DEVICES
;
}
ioc_init
.
MaxBuses
=
MPT_MAX_BUS
;
ioc_init
.
ReplyFrameSize
=
cpu_to_le16
(
ioc
->
reply_sz
);
/* in BYTES */
...
...
@@ -2622,7 +2588,7 @@ SendPortEnable(MPT_ADAPTER *ioc, int portnum, int sleepFlag)
/* RAID FW may take a long time to enable
*/
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
{
if
(
ioc
->
bus_type
==
FC
)
{
ii
=
mpt_handshake_req_reply_wait
(
ioc
,
req_sz
,
(
u32
*
)
&
port_enable
,
reply_sz
,
(
u16
*
)
&
reply_buf
,
65
/*seconds*/
,
sleepFlag
);
}
else
{
...
...
@@ -2992,7 +2958,7 @@ KickStart(MPT_ADAPTER *ioc, int force, int sleepFlag)
int
cnt
,
cntdn
;
dinitprintk
((
KERN_WARNING
MYNAM
": KickStarting %s!
\n
"
,
ioc
->
name
));
if
(
(
int
)
ioc
->
chip_type
>
(
int
)
FC929
)
{
if
(
ioc
->
bus_type
==
SCSI
)
{
/* Always issue a Msg Unit Reset first. This will clear some
* SCSI bus hang conditions.
*/
...
...
@@ -3420,7 +3386,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
(
(
int
)
ioc
->
chip_type
>
(
int
)
FC929
)
if
(
ioc
->
bus_type
==
SCSI
)
num_chain
*=
MPT_SCSI_CAN_QUEUE
;
else
num_chain
*=
MPT_FC_CAN_QUEUE
;
...
...
@@ -5277,7 +5243,7 @@ procmpt_iocinfo_read(char *buf, char **start, off_t offset, int request, int *eo
len
+=
sprintf
(
buf
+
len
,
" PortNumber = %d (of %d)
\n
"
,
p
+
1
,
ioc
->
facts
.
NumberOfPorts
);
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
{
if
(
ioc
->
bus_type
==
FC
)
{
if
(
ioc
->
pfacts
[
p
].
ProtocolFlags
&
MPI_PORTFACTS_PROTOCOL_LAN
)
{
u8
*
a
=
(
u8
*
)
&
ioc
->
lan_cnfg_page1
.
HardwareAddressLow
;
len
+=
sprintf
(
buf
+
len
,
" LanAddr = %02X:%02X:%02X:%02X:%02X:%02X
\n
"
,
...
...
@@ -5921,11 +5887,6 @@ fusion_init(void)
int
i
;
int
r
;
if
(
FusionInitCalled
++
)
{
dprintk
((
KERN_INFO
MYNAM
": INFO - Driver late-init entry point called
\n
"
));
return
0
;
}
show_mptmod_ver
(
my_NAME
,
my_VERSION
);
printk
(
KERN_INFO
COPYRIGHT
"
\n
"
);
...
...
drivers/message/fusion/mptbase.h
View file @
4c244d1a
...
...
@@ -83,8 +83,8 @@
#define COPYRIGHT "Copyright (c) 1999-2004 " MODULEAUTHOR
#endif
#define MPT_LINUX_VERSION_COMMON "3.01.1
7
"
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.1
7
"
#define MPT_LINUX_VERSION_COMMON "3.01.1
8
"
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.1
8
"
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
#define show_mptmod_ver(s,ver) \
...
...
@@ -296,23 +296,6 @@ typedef struct _MPT_SGL64_HDR {
SGESimple64_t
sge
[
1
];
}
MPT_SGL64_HDR
;
/*
* Chip-specific stuff... FC929 delineates break between
* FC and Parallel SCSI parts. Do NOT re-order.
*/
typedef
enum
{
FC919X
=
0x0819
,
FC929X
=
0x0829
,
FC909
=
0x0909
,
FC919
=
0x0919
,
FC929
=
0x0929
,
C1030
=
0x1030
,
C1035
=
0x1035
,
FCUNK
=
0xFBAD
}
CHIP_TYPE
;
/*
* System interface register set
*/
...
...
@@ -517,6 +500,7 @@ typedef struct _MPT_ADAPTER
char
*
prod_name
;
/* "LSIFC9x9" */
SYSIF_REGS
__iomem
*
chip
;
/* == c8817000 (mmap) */
SYSIF_REGS
__iomem
*
pio_chip
;
/* Programmed IO (downloadboot) */
u8
bus_type
;
u32
mem_phys
;
/* == f4020000 (mmap) */
u32
pio_mem_phys
;
/* Programmed IO (downloadboot) */
int
mem_size
;
/* mmap memory size */
...
...
@@ -543,7 +527,6 @@ typedef struct _MPT_ADAPTER
dma_addr_t
ChainBufferDMA
;
struct
list_head
FreeChainQ
;
spinlock_t
FreeChainQlock
;
CHIP_TYPE
chip_type
;
/* We (host driver) get to manage our own RequestQueue! */
dma_addr_t
req_frames_dma
;
MPT_FRAME_HDR
*
req_frames
;
/* Request msg frames - rounded up! */
...
...
@@ -573,12 +556,6 @@ typedef struct _MPT_ADAPTER
int
eventTypes
;
/* Event logging parameters */
int
eventContext
;
/* Next event context */
int
eventLogSize
;
/* Max number of cached events */
#ifdef MPTSCSIH_DBG_TIMEOUT
int
timeout_hard
;
int
timeout_delta
;
int
timeout_cnt
;
int
timeout_maxcnt
;
#endif
struct
_mpt_ioctl_events
*
events
;
/* pointer to event log */
u8
*
cached_fw
;
/* Pointer to FW */
dma_addr_t
cached_fw_dma
;
...
...
@@ -894,6 +871,12 @@ typedef struct _MPT_LOCAL_REPLY {
#define TM_STATE_IN_PROGRESS (1)
#define TM_STATE_ERROR (2)
typedef
enum
{
FC
,
SCSI
,
SAS
}
BUS_TYPE
;
typedef
struct
_MPT_SCSI_HOST
{
MPT_ADAPTER
*
ioc
;
int
port
;
...
...
@@ -909,7 +892,6 @@ typedef struct _MPT_SCSI_HOST {
*/
u8
tmPending
;
u8
resetPending
;
u8
is_spi
;
/* Parallel SCSI i/f */
u8
negoNvram
;
/* DV disabled, nego NVRAM */
u8
pad1
;
u8
tmState
;
...
...
drivers/message/fusion/mptctl.c
View file @
4c244d1a
...
...
@@ -1218,7 +1218,7 @@ mptctl_getiocinfo (unsigned long arg, unsigned int data_size)
/* Fill in the data and return the structure to the calling
* program
*/
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
if
(
ioc
->
bus_type
==
FC
)
karg
->
adapterType
=
MPT_IOCTL_INTERFACE_FC
;
else
karg
->
adapterType
=
MPT_IOCTL_INTERFACE_SCSI
;
...
...
@@ -1518,7 +1518,7 @@ mptctl_readtest (unsigned long arg)
#ifdef MFCNT
karg
.
chip_type
=
ioc
->
mfcnt
;
#else
karg
.
chip_type
=
ioc
->
chip_typ
e
;
karg
.
chip_type
=
ioc
->
pcidev
->
devic
e
;
#endif
strncpy
(
karg
.
name
,
ioc
->
name
,
MPT_MAX_NAME
);
karg
.
name
[
MPT_MAX_NAME
-
1
]
=
'\0'
;
...
...
@@ -2470,7 +2470,7 @@ mptctl_hp_hostinfo(unsigned long arg, unsigned int data_size)
karg
.
base_io_addr
=
pci_resource_start
(
pdev
,
0
);
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
if
(
ioc
->
bus_type
==
FC
)
karg
.
bus_phys_width
=
HP_BUS_WIDTH_UNK
;
else
karg
.
bus_phys_width
=
HP_BUS_WIDTH_16
;
...
...
@@ -2559,7 +2559,7 @@ mptctl_hp_targetinfo(unsigned long arg)
/* There is nothing to do for FCP parts.
*/
if
(
(
int
)
ioc
->
chip_type
<=
(
int
)
FC929
)
if
(
ioc
->
bus_type
==
FC
)
return
0
;
if
((
ioc
->
spi_data
.
sdp0length
==
0
)
||
(
ioc
->
sh
==
NULL
))
...
...
drivers/message/fusion/mptscsih.c
View file @
4c244d1a
This diff is collapsed.
Click to expand it.
drivers/message/fusion/mptscsih.h
View file @
4c244d1a
...
...
@@ -95,17 +95,8 @@ struct mptscsih_driver_setup
{
u8
dv
;
u8
max_width
;
u8
min_sync_fac
;
u8
min_sync_fac
tor
;
u8
saf_te
;
};
#define MPTSCSIH_DRIVER_SETUP \
{ \
MPTSCSIH_DOMAIN_VALIDATION, \
MPTSCSIH_MAX_WIDTH, \
MPTSCSIH_MIN_SYNC, \
MPTSCSIH_SAF_TE, \
}
#endif
drivers/s390/scsi/zfcp_def.h
View file @
4c244d1a
...
...
@@ -34,8 +34,7 @@
#ifndef ZFCP_DEF_H
#define ZFCP_DEF_H
/* this drivers version (do not edit !!! generated and updated by cvs) */
#define ZFCP_DEF_REVISION "$Revision: 1.110 $"
#define ZFCP_DEF_REVISION "$Revision: 1.111 $"
/*************************** INCLUDES *****************************************/
...
...
@@ -70,6 +69,7 @@
/********************* GENERAL DEFINES *********************************/
/* zfcp version number, it consists of major, minor, and patch-level number */
#define ZFCP_VERSION "4.2.0"
/**
...
...
drivers/s390/scsi/zfcp_erp.c
View file @
4c244d1a
...
...
@@ -31,8 +31,7 @@
#define ZFCP_LOG_AREA ZFCP_LOG_AREA_ERP
/* this drivers version (do not edit !!! generated and updated by cvs) */
#define ZFCP_ERP_REVISION "$Revision: 1.83 $"
#define ZFCP_ERP_REVISION "$Revision: 1.85 $"
#include "zfcp_ext.h"
...
...
@@ -3482,9 +3481,8 @@ zfcp_erp_port_access_denied(struct zfcp_port *port)
debug_text_event
(
adapter
->
erp_dbf
,
3
,
"p_access_block"
);
debug_event
(
adapter
->
erp_dbf
,
3
,
&
port
->
wwpn
,
sizeof
(
wwn_t
));
read_lock_irqsave
(
&
zfcp_data
.
config_lock
,
flags
);
zfcp_erp_modify_port_status
(
port
,
ZFCP_STATUS_COMMON_ERP_FAILED
|
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
ZFCP_SET
);
zfcp_erp_modify_port_status
(
port
,
ZFCP_STATUS_COMMON_ERP_FAILED
|
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
ZFCP_SET
);
read_unlock_irqrestore
(
&
zfcp_data
.
config_lock
,
flags
);
}
...
...
@@ -3500,9 +3498,8 @@ zfcp_erp_unit_access_denied(struct zfcp_unit *unit)
debug_text_event
(
adapter
->
erp_dbf
,
3
,
"u_access_block"
);
debug_event
(
adapter
->
erp_dbf
,
3
,
&
unit
->
fcp_lun
,
sizeof
(
fcp_lun_t
));
zfcp_erp_modify_unit_status
(
unit
,
ZFCP_STATUS_COMMON_ERP_FAILED
|
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
ZFCP_SET
);
zfcp_erp_modify_unit_status
(
unit
,
ZFCP_STATUS_COMMON_ERP_FAILED
|
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
ZFCP_SET
);
}
/*
...
...
@@ -3541,19 +3538,21 @@ zfcp_erp_port_access_changed(struct zfcp_port *port)
debug_text_event
(
adapter
->
erp_dbf
,
3
,
"p_access_unblock"
);
debug_event
(
adapter
->
erp_dbf
,
3
,
&
port
->
wwpn
,
sizeof
(
wwn_t
));
if
(
!
atomic_test_mask
(
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
&
port
->
status
))
{
if
(
!
atomic_test_mask
(
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
&
port
->
status
))
{
if
(
!
atomic_test_mask
(
ZFCP_STATUS_PORT_WKA
,
&
port
->
status
))
list_for_each_entry
(
unit
,
&
port
->
unit_list_head
,
list
)
zfcp_erp_unit_access_changed
(
unit
);
return
;
}
ZFCP_LOG_NORMAL
(
"
Trying to reopen
port 0x%016Lx on adapter %s "
"
due to update to access control table
\n
"
,
ZFCP_LOG_NORMAL
(
"
reopen of
port 0x%016Lx on adapter %s "
"
(due to ACT update)
\n
"
,
port
->
wwpn
,
zfcp_get_busid_by_adapter
(
adapter
));
if
(
zfcp_erp_port_reopen
(
port
,
ZFCP_STATUS_COMMON_ERP_FAILED
)
!=
0
)
ZFCP_LOG_NORMAL
(
"Reopen of port 0x%016Lx on adapter %s failed
\n
"
,
port
->
wwpn
,
zfcp_get_busid_by_adapter
(
adapter
));
ZFCP_LOG_NORMAL
(
"failed reopen of port"
"(adapter %s, wwpn=0x%016Lx)
\n
"
,
zfcp_get_busid_by_adapter
(
adapter
),
port
->
wwpn
);
}
/*
...
...
@@ -3572,16 +3571,15 @@ zfcp_erp_unit_access_changed(struct zfcp_unit *unit)
if
(
!
atomic_test_mask
(
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
&
unit
->
status
))
return
;
ZFCP_LOG_NORMAL
(
"Trying to reopen unit 0x%016Lx "
"on port 0x%016Lx on adapter %s "
"due to update to access control table
\n
"
,
ZFCP_LOG_NORMAL
(
"reopen of unit 0x%016Lx on port 0x%016Lx "
" on adapter %s (due to ACT update)
\n
"
,
unit
->
fcp_lun
,
unit
->
port
->
wwpn
,
zfcp_get_busid_by_adapter
(
adapter
));
if
(
zfcp_erp_unit_reopen
(
unit
,
ZFCP_STATUS_COMMON_ERP_FAILED
)
!=
0
)
ZFCP_LOG_NORMAL
(
"
Reopen of unit 0x%016Lx
"
"
on port 0x%016Lx on adapter %s failed
\n
"
,
unit
->
fcp_lun
,
unit
->
port
->
wwpn
,
zfcp_get_busid_by_adapter
(
adapter
)
);
ZFCP_LOG_NORMAL
(
"
failed reopen of unit (adapter %s,
"
"
wwpn=0x%016Lx, fcp_lun=0x%016Lx)
\n
"
,
zfcp_get_busid_by_adapter
(
adapter
)
,
unit
->
port
->
wwpn
,
unit
->
fcp_lun
);
}
#undef ZFCP_LOG_AREA
drivers/s390/scsi/zfcp_ext.h
View file @
4c244d1a
...
...
@@ -31,8 +31,8 @@
#ifndef ZFCP_EXT_H
#define ZFCP_EXT_H
/* this drivers version (do not edit !!! generated and updated by cvs) */
#define ZFCP_EXT_REVISION "$Revision: 1.6
1
$"
#define ZFCP_EXT_REVISION "$Revision: 1.6
2
$"
#include "zfcp_def.h"
...
...
drivers/s390/scsi/zfcp_fsf.c
View file @
4c244d1a
...
...
@@ -30,8 +30,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* this drivers version (do not edit !!! generated and updated by cvs) */
#define ZFCP_FSF_C_REVISION "$Revision: 1.86 $"
#define ZFCP_FSF_C_REVISION "$Revision: 1.88 $"
#include "zfcp_ext.h"
...
...
@@ -1737,7 +1736,7 @@ zfcp_fsf_send_els(struct zfcp_send_els *els)
adapter
=
els
->
adapter
;
ret
=
zfcp_fsf_req_create
(
adapter
,
FSF_QTCB_SEND_ELS
,
ZFCP_
WAIT_FOR_SBAL
|
ZFCP_
REQ_AUTO_CLEANUP
,
ZFCP_REQ_AUTO_CLEANUP
,
NULL
,
&
lock_flags
,
&
fsf_req
);
if
(
ret
<
0
)
{
ZFCP_LOG_INFO
(
"error: creation of ELS request failed "
...
...
@@ -3094,57 +3093,11 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req)
exclusive
=
bottom
->
lun_access_info
&
FSF_UNIT_ACCESS_EXCLUSIVE
;
readwrite
=
bottom
->
lun_access_info
&
FSF_UNIT_ACCESS_OUTBOUND_TRANSFER
;
if
(
!
adapter
->
supported_features
&
FSF_FEATURE_CFDC
)
goto
no_cfdc
;
atomic_clear_mask
(
ZFCP_STATUS_COMMON_ACCESS_DENIED
|
ZFCP_STATUS_UNIT_SHARED
|
ZFCP_STATUS_UNIT_READONLY
,
&
unit
->
status
);
if
(
!
allowed
)
atomic_set_mask
(
ZFCP_STATUS_COMMON_ACCESS_DENIED
,
&
unit
->
status
);
if
(
!
adapter
->
supported_features
&
FSF_FEATURE_LUN_SHARING
)
goto
no_lun_sharing
;
if
(
!
exclusive
)
atomic_set_mask
(
ZFCP_STATUS_UNIT_SHARED
,
&
unit
->
status
);
if
(
!
readwrite
)
{
atomic_set_mask
(
ZFCP_STATUS_UNIT_READONLY
,
&
unit
->
status
);
ZFCP_LOG_NORMAL
(
"Unit 0x%016Lx on port 0x%016Lx on adapter %s "
"accessed read-only
\n
"
,
unit
->
fcp_lun
,
unit
->
port
->
wwpn
,
zfcp_get_busid_by_unit
(
unit
));
}
if
(
exclusive
&&
!
readwrite
)
{
ZFCP_LOG_NORMAL
(
"Exclusive access of read-only unit not "
"supported
\n
"
);
zfcp_erp_unit_failed
(
unit
);
fsf_req
->
status
|=
ZFCP_STATUS_FSFREQ_ERROR
;
goto
skip_fsfstatus
;
}
if
(
!
exclusive
&&
readwrite
)
{
ZFCP_LOG_NORMAL
(
"Shared access of read-write unit is not "
"supported
\n
"
);
zfcp_erp_unit_failed
(
unit
);
fsf_req
->
status
|=
ZFCP_STATUS_FSFREQ_ERROR
;
goto
skip_fsfstatus
;
}
no_lun_sharing:
no_cfdc:
if
(
!
(
adapter
->
supported_features
&
FSF_FEATURE_CFDC
)
&&
(
adapter
->
supported_features
&
FSF_FEATURE_LUN_SHARING
))
{
ZFCP_LOG_NORMAL
(
"LUN sharing without access control is not "
"supported.
\n
"
);
zfcp_erp_unit_failed
(
unit
);
fsf_req
->
status
|=
ZFCP_STATUS_FSFREQ_ERROR
;
goto
skip_fsfstatus
;
}
/* evaluate FSF status in QTCB */
switch
(
header
->
fsf_status
)
{
...
...
@@ -3196,6 +3149,8 @@ zfcp_fsf_open_unit_handler(struct zfcp_fsf_req *fsf_req)
}
debug_text_event
(
adapter
->
erp_dbf
,
1
,
"fsf_s_access"
);
zfcp_erp_unit_access_denied
(
unit
);
atomic_clear_mask
(
ZFCP_STATUS_UNIT_SHARED
,
&
unit
->
status
);
atomic_clear_mask
(
ZFCP_STATUS_UNIT_READONLY
,
&
unit
->
status
);
fsf_req
->
status
|=
ZFCP_STATUS_FSFREQ_ERROR
;
break
;
...
...
drivers/s390/scsi/zfcp_scsi.c
View file @
4c244d1a
...
...
@@ -31,8 +31,7 @@
#define ZFCP_LOG_AREA ZFCP_LOG_AREA_SCSI
/* this drivers version (do not edit !!! generated and updated by cvs) */
#define ZFCP_SCSI_REVISION "$Revision: 1.73 $"
#define ZFCP_SCSI_REVISION "$Revision: 1.74 $"
#include "zfcp_ext.h"
...
...
drivers/scsi/Kconfig
View file @
4c244d1a
...
...
@@ -1767,7 +1767,7 @@ config SCSI_SUNESP
config ZFCP
tristate "FCP host bus adapter driver for IBM eServer zSeries"
depends on ARCH_S390 && SCSI
depends on ARCH_S390 &&
QDIO &&
SCSI
select SCSI_FC_ATTRS
help
If you want to access SCSI devices attached to your IBM eServer
...
...
drivers/scsi/aacraid/aachba.c
View file @
4c244d1a
...
...
@@ -645,9 +645,31 @@ int aac_get_adapter_info(struct aac_dev* dev)
dev
->
adapter_info
.
serial
[
1
]);
dev
->
nondasd_support
=
0
;
dev
->
raid_scsi_mode
=
0
;
if
(
dev
->
adapter_info
.
options
&
AAC_OPT_NONDASD
){
dev
->
nondasd_support
=
1
;
}
/*
* If the firmware supports ROMB RAID/SCSI mode and we are currently
* in RAID/SCSI mode, set the flag. For now if in this mode we will
* force nondasd support on. If we decide to allow the non-dasd flag
* additional changes changes will have to be made to support
* RAID/SCSI. the function aac_scsi_cmd in this module will have to be
* changed to support the new dev->raid_scsi_mode flag instead of
* leaching off of the dev->nondasd_support flag. Also in linit.c the
* function aac_detect will have to be modified where it sets up the
* max number of channels based on the aac->nondasd_support flag only.
*/
if
((
dev
->
adapter_info
.
options
&
AAC_OPT_SCSI_MANAGED
)
&&
(
dev
->
adapter_info
.
options
&
AAC_OPT_RAID_SCSI_MODE
))
{
dev
->
nondasd_support
=
1
;
dev
->
raid_scsi_mode
=
1
;
}
if
(
dev
->
raid_scsi_mode
!=
0
)
printk
(
KERN_INFO
"%s%d: ROMB RAID/SCSI mode enabled
\n
"
,
dev
->
name
,
dev
->
id
);
if
(
nondasd
!=
-
1
)
{
dev
->
nondasd_support
=
(
nondasd
!=
0
);
}
...
...
@@ -1137,7 +1159,7 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd)
char
*
cp
;
dprintk
((
KERN_DEBUG
"READ CAPACITY command.
\n
"
));
if
(
fsa_dev_ptr
[
cid
].
size
<=
0x100000000
)
if
(
fsa_dev_ptr
[
cid
].
size
<=
0x100000000
LL
)
capacity
=
fsa_dev_ptr
[
cid
].
size
-
1
;
else
capacity
=
(
u32
)
-
1
;
...
...
@@ -1446,8 +1468,17 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
if
(
b
==
TYPE_TAPE
||
b
==
TYPE_WORM
||
b
==
TYPE_ROM
||
b
==
TYPE_MOD
||
b
==
TYPE_MEDIUM_CHANGER
||
(
b
==
TYPE_DISK
&&
(
b1
&
0x80
))
){
scsicmd
->
result
=
DID_OK
<<
16
|
COMMAND_COMPLETE
<<
8
;
/*
* We will allow disk devices if in RAID/SCSI mode and
* the channel is 2
*/
}
else
if
((
dev
->
raid_scsi_mode
)
&&
(
scsicmd
->
device
->
channel
==
2
))
{
scsicmd
->
result
=
DID_OK
<<
16
|
COMMAND_COMPLETE
<<
8
;
}
else
{
scsicmd
->
result
=
DID_NO_CONNECT
<<
16
|
COMMAND_COMPLETE
<<
8
;
scsicmd
->
result
=
DID_NO_CONNECT
<<
16
|
COMMAND_COMPLETE
<<
8
;
}
}
else
{
scsicmd
->
result
=
DID_OK
<<
16
|
COMMAND_COMPLETE
<<
8
;
...
...
@@ -1479,8 +1510,17 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
if
(
b
==
TYPE_TAPE
||
b
==
TYPE_WORM
||
b
==
TYPE_ROM
||
b
==
TYPE_MOD
||
b
==
TYPE_MEDIUM_CHANGER
||
(
b
==
TYPE_DISK
&&
(
b1
&
0x80
))
){
scsicmd
->
result
=
DID_OK
<<
16
|
COMMAND_COMPLETE
<<
8
;
/*
* We will allow disk devices if in RAID/SCSI mode and
* the channel is 2
*/
}
else
if
((
dev
->
raid_scsi_mode
)
&&
(
scsicmd
->
device
->
channel
==
2
))
{
scsicmd
->
result
=
DID_OK
<<
16
|
COMMAND_COMPLETE
<<
8
;
}
else
{
scsicmd
->
result
=
DID_NO_CONNECT
<<
16
|
COMMAND_COMPLETE
<<
8
;
scsicmd
->
result
=
DID_NO_CONNECT
<<
16
|
COMMAND_COMPLETE
<<
8
;
}
break
;
}
...
...
drivers/scsi/aacraid/aacraid.h
View file @
4c244d1a
...
...
@@ -805,6 +805,8 @@ struct aac_adapter_info
#define AAC_OPT_SGMAP_HOST64 cpu_to_le32(1<<10)
#define AAC_OPT_ALARM cpu_to_le32(1<<11)
#define AAC_OPT_NONDASD cpu_to_le32(1<<12)
#define AAC_OPT_SCSI_MANAGED cpu_to_le32(1<<13)
#define AAC_OPT_RAID_SCSI_MODE cpu_to_le32(1<<14)
struct
aac_dev
{
...
...
@@ -877,6 +879,7 @@ struct aac_dev
*/
u8
nondasd_support
;
u8
dac_support
;
u8
raid_scsi_mode
;
};
#define aac_adapter_interrupt(dev) \
...
...
drivers/scsi/aic7xxx/aic79xx_osm.h
View file @
4c244d1a
...
...
@@ -540,7 +540,7 @@ struct ahd_platform_data {
uint32_t
irq
;
/* IRQ for this adapter */
uint32_t
bios_address
;
uint32_t
mem_busaddr
;
/* Mem Base Addr */
dma_addr
_t
hw_dma_mask
;
uint64
_t
hw_dma_mask
;
ahd_linux_softc_flags
flags
;
};
...
...
drivers/scsi/aic7xxx/aic79xx_osm_pci.c
View file @
4c244d1a
...
...
@@ -170,24 +170,22 @@ ahd_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if
(
sizeof
(
dma_addr_t
)
>
4
)
{
uint64_t
memsize
;
dma_addr_t
mask_64bit
;
dma_addr_t
mask_39bit
;
const
uint64_t
mask_39bit
=
0x7FFFFFFFFFULL
;
memsize
=
ahd_linux_get_memsize
();
mask_64bit
=
(
dma_addr_t
)
0xFFFFFFFFFFFFFFFFULL
;
mask_39bit
=
(
dma_addr_t
)
0x7FFFFFFFFFULL
;
if
(
memsize
>=
0x8000000000ULL
&&
pci_set_dma_mask
(
pdev
,
mask_64bit
)
==
0
)
{
&&
pci_set_dma_mask
(
pdev
,
DMA_64BIT_MASK
)
==
0
)
{
ahd
->
flags
|=
AHD_64BIT_ADDRESSING
;
ahd
->
platform_data
->
hw_dma_mask
=
mask_64bit
;
ahd
->
platform_data
->
hw_dma_mask
=
DMA_64BIT_MASK
;
}
else
if
(
memsize
>
0x80000000
&&
pci_set_dma_mask
(
pdev
,
mask_39bit
)
==
0
)
{
ahd
->
flags
|=
AHD_39BIT_ADDRESSING
;
ahd
->
platform_data
->
hw_dma_mask
=
mask_39bit
;
}
}
else
{
pci_set_dma_mask
(
pdev
,
0xFFFFFFFF
);
ahd
->
platform_data
->
hw_dma_mask
=
0xFFFFFFFF
;
pci_set_dma_mask
(
pdev
,
DMA_32BIT_MASK
);
ahd
->
platform_data
->
hw_dma_mask
=
DMA_32BIT_MASK
;
}
ahd
->
dev_softc
=
pci
;
error
=
ahd_pci_config
(
ahd
,
entry
);
...
...
drivers/scsi/aic7xxx/aic7xxx_osm.h
View file @
4c244d1a
...
...
@@ -545,7 +545,7 @@ struct ahc_platform_data {
uint32_t
irq
;
/* IRQ for this adapter */
uint32_t
bios_address
;
uint32_t
mem_busaddr
;
/* Mem Base Addr */
dma_addr
_t
hw_dma_mask
;
uint64
_t
hw_dma_mask
;
ahc_linux_softc_flags
flags
;
};
...
...
drivers/scsi/aic7xxx/aic7xxx_osm_pci.c
View file @
4c244d1a
...
...
@@ -175,7 +175,7 @@ static int
ahc_linux_pci_dev_probe
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
)
{
char
buf
[
80
];
dma_addr_t
mask_39bit
;
const
uint64_t
mask_39bit
=
0x7FFFFFFFFFULL
;
struct
ahc_softc
*
ahc
;
ahc_dev_softc_t
pci
;
struct
ahc_pci_identity
*
entry
;
...
...
@@ -226,18 +226,17 @@ ahc_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
}
pci_set_master
(
pdev
);
mask_39bit
=
0x7FFFFFFFFFULL
;
if
(
sizeof
(
dma_addr_t
)
>
4
&&
ahc_linux_get_memsize
()
>
0x80000000
&&
pci_set_dma_mask
(
pdev
,
mask_39bit
)
==
0
)
{
ahc
->
flags
|=
AHC_39BIT_ADDRESSING
;
ahc
->
platform_data
->
hw_dma_mask
=
mask_39bit
;
}
else
{
if
(
pci_set_dma_mask
(
pdev
,
0xFFFFFFFF
))
{
if
(
pci_set_dma_mask
(
pdev
,
DMA_32BIT_MASK
))
{
printk
(
KERN_WARNING
"aic7xxx: No suitable DMA available.
\n
"
);
return
(
-
ENODEV
);
}
ahc
->
platform_data
->
hw_dma_mask
=
0xFFFFFFFF
;
ahc
->
platform_data
->
hw_dma_mask
=
DMA_32BIT_MASK
;
}
#endif
ahc
->
dev_softc
=
pci
;
...
...
drivers/scsi/scsi_devinfo.c
View file @
4c244d1a
...
...
@@ -118,6 +118,7 @@ static struct {
* Other types of devices that have special flags.
* Note that all USB devices should have the BLIST_INQUIRY_36 flag.
*/
{
"3PARdata"
,
"VV"
,
NULL
,
BLIST_REPORTLUN2
},
{
"ADAPTEC"
,
"AACRAID"
,
NULL
,
BLIST_FORCELUN
},
{
"ADAPTEC"
,
"Adaptec 5400S"
,
NULL
,
BLIST_FORCELUN
},
{
"AFT PRO"
,
"-IX CF"
,
"0.0>"
,
BLIST_FORCELUN
},
...
...
drivers/scsi/scsi_lib.c
View file @
4c244d1a
...
...
@@ -728,7 +728,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes,
req
->
sense_len
=
len
;
}
}
else
req
->
data_len
-=
cmd
->
bufflen
;
req
->
data_len
=
cmd
->
resid
;
}
/*
...
...
drivers/scsi/scsi_transport_spi.c
View file @
4c244d1a
...
...
@@ -361,9 +361,8 @@ static ssize_t store_spi_host_signalling(struct class_device *cdev,
enum
spi_signal_type
type
=
spi_signal_to_value
(
buf
);
if
(
type
!=
SPI_SIGNAL_UNKNOWN
)
return
count
;
i
->
f
->
set_signalling
(
shost
,
type
)
;
i
->
f
->
set_signalling
(
shost
,
type
);
return
count
;
}
static
CLASS_DEVICE_ATTR
(
signalling
,
S_IRUGO
|
S_IWUSR
,
...
...
@@ -635,7 +634,11 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer)
/* OK, now we have our initial speed set by the read only inquiry
* test, now try an echo buffer test (if the device allows it) */
if
((
len
=
spi_dv_device_get_echo_buffer
(
sreq
,
buffer
))
==
0
)
{
len
=
0
;
if
(
sdev
->
ppr
)
len
=
spi_dv_device_get_echo_buffer
(
sreq
,
buffer
);
if
(
len
==
0
)
{
SPI_PRINTK
(
sdev
->
sdev_target
,
KERN_INFO
,
"Domain Validation skipping write tests
\n
"
);
return
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment