freebsd-dev/sys/dev/mps
Kenneth D. Merry 9b91b192fb Merge in phase 14+ -> 16 mps driver fixes from LSI:
---------------------------------------------------------------
System panics during a Port reset with ouststanding I/O
---------------------------------------------------------------
It is possible to call mps_mapping_free_memory after this
memory is already freed, causing a panic. Removed this extra
call to mps_mappiing_free_memory and call mps_mapping_exit
in place of the mps_mapping_free_memory call so that any
outstanding mapping items can be flushed before memory is
freed.

---------------------------------------------------------------
Correct memory leak during a Port reset with ouststanding I/O
---------------------------------------------------------------
In mps_reinit function, the mapping memory was not being
freed before being re-allocated. Added line to call the
memory free function for mapping memory.

---------------------------------------------------------------
Use CAM_SIM_QUEUED flag in Driver IO path.
---------------------------------------------------------------
This flag informs the XPT that successful abort of a CCB
requires an abort ccb to be issued to the SIM.  While
processing SCSI IO's, set the CAM_SIM_QUEUED flag in the
status for the IO. When the command completes, clear this
flag.

---------------------------------------------------------------
Check for CAM_REQ_INPROG in I/O path.
---------------------------------------------------------------
Added a check in mpssas_action_scsiio for the In Progress
status for the IO. If this flag is set, the IO has already
been aborted by the upper layer (before CAM_SIM_QUEUED was
set) and there is no need to send the IO. The request will
be completed without error.

---------------------------------------------------------------
Improve "doorbell handshake method" for mps_get_iocfacts
---------------------------------------------------------------
Removed call to get Port Facts since this information is
not used currently.

Added mps_iocfacts_allocate function to allocate memory
that is based on IOC Facts data.  Added mps_iocfacts_free
function to free memory that is based on IOC Facts data.
Both of the functions are used when a Diag Reset is performed
or when the driver is attached/detached. This is needed in
case IOC Facts changes after a Diag Reset, which could
happen if FW is upgraded.

Moved call of mps_bases_static_config_pages from the attach
routine to after the IOC is ready to process accesses based
on the new memory allocations (instead of polling through
the Doorbell).

---------------------------------------------------------------
Set TimeStamp in INIT message in millisecond format Set the IOC
---------------------------------------------------------------

---------------------------------------------------------------
Prefer mps_wait_command to mps_request_polled
---------------------------------------------------------------
Instead of using mps_request_polled, call mps_wait_command
whenever possible. Change the mps_wait_command function to
check the current context and either use interrupt context
or poll if required by using the pause or DELAY function.
Added a check after waiting 50mSecs to see if the command
has timed out. This is only done if polliing, the msleep
command will automatically timeout if the command has taken
too long to complete.

---------------------------------------------------------------
Integrated RAID: Volume Activation Failed error message is
displayed though the volume has been activated.
---------------------------------------------------------------
Instead of failing an IOCTL request that does not have a
large enough buffer to hold the complete reply, copy as
much data from the reply as possible into the user's buffer
and log a message saying that the user's buffer was smaller
than the returned data.

---------------------------------------------------------------
mapping_add_new_device failure due to persistent table FULL
---------------------------------------------------------------
When a new device is added, if it is determined that the
device persistent table is being used and is full, instead
of displaying a message for this condition every time, only
log a message if the MPS_INFO bit is set in the debug_flags.

Submitted by:	LSI
MFC after:	1 week
2013-07-22 18:41:53 +00:00
..
mpi Bring in LSI's latest mps(4) 6Gb SAS and WarpDrive driver, version 2012-06-28 03:48:54 +00:00
mps_config.c Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00
mps_ioctl.h Bring in LSI's latest mps(4) 6Gb SAS and WarpDrive driver, version 2012-06-28 03:48:54 +00:00
mps_mapping.c Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00
mps_mapping.h Bring in LSI's latest mps(4) 6Gb SAS and WarpDrive driver, version 2012-06-28 03:48:54 +00:00
mps_pci.c Overhaul error, information, and debug logging. 2013-07-19 00:12:41 +00:00
mps_sas_lsi.c Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00
mps_sas.c Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00
mps_sas.h CAM and mps(4) driver scanning changes. 2013-07-22 18:37:07 +00:00
mps_table.c Overhaul error, information, and debug logging. 2013-07-19 00:12:41 +00:00
mps_table.h
mps_user.c Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00
mps.c Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00
mpsvar.h Merge in phase 14+ -> 16 mps driver fixes from LSI: 2013-07-22 18:41:53 +00:00