aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2011-07-03isci: rely on irq core for intx multiplexing, and silence screaming intxDan Williams2-21/+22
Remove the extra logic to poll each controller for interrupts, that's the core's job for shared interrupts. While testing noticed that a number of interrupts fire while waiting for the completion tasklet to run, so added an irq-ack. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: replace this_* and the_* variables with more meaningful namesDave Jiang21-1477/+1481
Removed any instances of the_* and this_* to variable names that are more meaningful and tell us what they actually are. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: validate oem parameters early, and fallbackDan Williams3-38/+49
If the platform specifies invalid parameters warn the user and fallback to internal defaults rather than fail the driver load altogether. Reported-by: Yinghai Lu <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fix oem parameter header definitionDan Williams2-16/+16
The element_length is 2 bytes. Reported-by: Yinghai Lu <[email protected]> Acked-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: audit usage of BUG_ON macro in isci driverBartosz Barcinski7-18/+15
Removes unnecessary usage of BUG_ON macro, excluding core directory. In some cases macro is unnecesary, check is done in caller function. In other cases macro is replaced by if construction with appropriate warning. Signed-off-by: Maciej Patelczyk <[email protected]> [changed some survivable bug conditions to WARN_ONCE] Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: sparse warnings cleanupBartosz Barcinski6-17/+16
Clean warnings and errors reported by sparse tool. request.c:430:50: warning: mixing different enum types remote_device.c:534:39: warning: symbol 'flags' shadows an earlier one task.c:495:44: warning: mixing different enum types scic_sds_controller.c:2155:24: warning: mixing different enum types scic_sds_controller.c:2272:36: warning: mixing different enum types scic_sds_controller.c:2911:38: warning: incorrect type in initializer (different address spaces) scic_sds_controller.c:2913:25: warning: incorrect type in argument 2 (different address spaces) scic_sds_request.c:875:34: warning: cast removes address space of expression scic_sds_request.c:876:123: warning: incorrect type in argument 2 (different address spaces) scic_sds_port.c:585:51: warning: incorrect type in assignment (different address spaces) scic_sds_port.c:712:9: warning: incorrect type in argument 2 (different address spaces) scic_sds_port.c:1770:25: warning: incorrect type in argument 2 (different address spaces) Signed-off-by: Bartosz Barcinski <[email protected]> Signed-off-by: Maciej Patelczyk <[email protected]> [fixed up some false positives and misconversions] Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: replace sci_sas_link_rate with sas_linkrateDan Williams9-33/+22
Drop duplicated enum definition. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove base_phy abstractionMaciej Trela6-412/+260
Merge struct sci_base_phy into scic_sds_phy. Until now sci_base_phy was referenced using scic_sds_phy->parent field. 'sci_base_phy' state machine handlers were also merged into scic_sds_phy state handlers. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Maciej Trela <[email protected]> Signed-off-by: Maciej Patelczyk <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove base_port abstractionMaciej Trela5-524/+285
Merge struct sci_base_port into scic_sds_port. Until now sci_base_port was referenced indirectly with scic_sds_port->parent field. 'sci_base_port' state machine handlers were also incorporated into scic_sds_port handlers. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Maciej Trela <[email protected]> Signed-off-by: Maciej Patelczyk <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove base_remote_device abstractionMaciej Trela6-741/+572
Merge struct sci_base_remote_device into scic_sds_remote_device. As for now sci_base_remote_device was accessed indirectly using scic_sds_remote_device->parent field. Both machine state handlers are also merged together. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Maciej Trela <[email protected]> Signed-off-by: Maciej Patelczyk <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove scic_controller state handlersChristoph Hellwig6-776/+193
Remove the state handler indirections for the scic_controller, and replace them with procedural calls that check for the correct state first. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: simplify dma coherent allocationChristoph Hellwig11-903/+111
Remove the insane infrastructure for preallocating coheren DMA regions, and just allocate the memory where needed. This also gets rid of the aligment adjustments given that Documentation/DMA-API-HOWTO.txt sais: "The cpu return address and the DMA bus master address are both guaranteed to be aligned to the smallest PAGE_SIZE order which is greater than or equal to the requested size. This invariant exists (for example) to guarantee that if you allocate a chunk which is smaller than or equal to 64 kilobytes, the extent of the buffer you receive will not cross a 64K boundary." Signed-off-by: Christoph Hellwig <[email protected]> [djbw: moved allocation from start to init, re-add memset] Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: simplify request state handlersChristoph Hellwig6-357/+80
Instead of filling up tables with default handlers call the default handler in the only caller. IMHO the whole state handlers concept is not very suitable for the isci request. For example there is a single real instance of the start handler, and we'd be much better off just having a check for the right state in the only caller, than all this mess. It's quite similar for the abort handler as well. Even the actual state machine has a lot of states that are rather pointless. The initial and constructed states are not needed at all as the request is not reachable for calls before it's fully set up and started. And the abort state should be replaced with an abort actions and a state transition to the completed state. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: kill dead data structurs in scic_io_request.hChristoph Hellwig2-184/+0
Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove base_request abstractionChristoph Hellwig15-941/+551
Merge struct sci_base_request into scic_sds_request, and also factor the two types of state machine handlers into one function. While we're at it also remove lots of duplicate incorrect kerneldoc comments for the state machine handlers. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove base_controller abstractionChristoph Hellwig8-638/+364
Merge struct sci_base_controller into scic_sds_controller, and also factor the two types of state machine handlers into one function. While we're at it also remove lots of duplicate incorrect kerneldoc comments for the state machine handlers. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove mmio wrappersChristoph Hellwig11-1167/+258
Remove a couple of layers around read/writel to make the driver readable. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fix fragile/conditional isci_host lookupsDan Williams9-219/+94
A domain_device can always reference back to ->lldd_ha unlike local lldd structures. Fix up cases where the driver uses local objects to look up the isci_host. This also changes the calling conventions of some routines to expect a valid isci_host parameter rather than re-lookup the pointer on entry. Incidentally cleans up some macros that are longer to type than the open-coded equivalent: isci_host_from_sas_ha isci_dev_from_domain_dev Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: cleanup isci_remote_device[_not]_ready interfaceDan Williams5-140/+92
Require a valid isci_host in support of the general cleanup to not re-lookup the host via potentially fragile methods when more robust methods are available. Also cleans up some more casting that should be using container_of() to up-cast a base structure in a more type-safe manner. Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Qualify when the host lock is managed for STP/SATA callbacks.Jeff Skirvin4-37/+50
In the case of internal discovery related STP/SATA I/O started through sas_execute_task the host lock is not taken by libsas before calling lldd_execute_task, so the lock should not be managed before calling back to libsas through task->task_done or sas_task_abort. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Fix use of SATA soft reset state machine.Jeff Skirvin1-34/+2
The driver SATA LUN reset function incorrectly sent an SRST deassert FIS, which is unnecessary because the core initiates the entire SATA soft reset state machine from the assert request. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Free host lock for SATA/STP abort escalation at submission time.Jeff Skirvin1-30/+30
In the case of I/O requests that fail at submit time because of a pending reset condition, the host lock for SATA/STP devices must be managed for any SCSI-initiated I/O before sas_task_abort is called. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Properly handle requests in the "aborting" state.Jeff Skirvin2-4/+12
When a TMF times-out, the request is set back to "aborting". Requests in the "aborting" state must be terminated when LUN and device resets occur. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Remove "screaming" data typesDave Jiang24-174/+167
Converting the all CAPS data types to lower case. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: remove unused "remote_device_started"Dan Williams3-80/+7
These routines are just stubs, re-add them when / if they are needed. Also cleanup remote_device_stopped. Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: namespacecheck cleanupsDan Williams30-1963/+1056
* mark needlessly global routines static * delete unused functions * move kernel-doc blocks from header files to source * reorder some functions to delete declarations * more default handler cleanups phy Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: kill some long macrosDan Williams9-1294/+389
Delete some macros that are longer to type than the open coded operation that they perform. scic_sds_phy_get_base_state_machine scic_sds_phy_get_starting_substate_machine scic_sds_port_get_base_state_machine scic_sds_port_get_ready_substate_machine scic_sds_remote_device_get_base_state_machine scic_sds_remote_device_get_ready_substate_machine scic_sds_remote_node_context_set_remote_node_index scic_sds_controller_get_base_state_machine Also performs some collateral cleanups like killing casts that assume structure member ordering, and consolidating a lot of duplicated default handler code (the primary callers of the *_get_base_state_machine macros) via a helper. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: reorder init to cleanup unneeded declarationsDan Williams1-17/+9
Just move isci_pci_driver below the function definitions and delete the declarations. A couple other whitespace fixups, and unused symbol deletions. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Remove event_* calls as they are just wrappersDave Jiang15-1751/+734
Removed isci_event_* calls and call those functions directly. Reported-by: Christoph Hellwig <[email protected]> Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fix a build warningDan Williams1-3/+2
Use min_t to address: drivers/scsi/isci/probe_roms.c: In function ‘isci_get_efi_var’: drivers/scsi/isci/probe_roms.c:241: warning: comparison of distinct pointer types lacks a cast Reported-by: David Milburn <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fix apc mode definitionDan Williams2-8/+4
The original apc mode definition is the correct one, the fix from commit 4711ba10 "isci: fix oem parameter initialization and mode detection" was based on a typo from a specification update. Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: exposing user parameters via module paramsDave Jiang4-37/+102
Exposing the user config parameters through the kernel module parameters. The kernel module params will have the default values set and we will no longer pulling the default values for user params from the core. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fix oem parameter initialization and mode detectionDan Williams9-72/+87
1/ Since commit 858d4aa7 "isci: Move firmware loading to per PCI device" we have been silently falling back to built-in defaults for the parameter settings by skipping the call to scic_oem_parameters_set(). 2/ The afe parameters from the firmware were not being honored 3/ The latest oem parameter definition flips the mode_type values which are now 0: for APC 1: for MPC. For APC we need to make sure all the phys default to the same address otherwise strict_wide_ports will cause duplicate domains. 4/ Fix up the driver announcement to indicate the source of the parameters. 5/ Fix up the sas addresses to be unique per controller (in the fallback case) Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Fixup for OEM parameter EFI variable retrievalDave Jiang2-11/+59
Updating the EFI variable OEM parameter retrieval after examining the EFI variable exported via sysfs. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fixup with testing from isci OROM in BIOSDan Williams3-8/+60
Added fixups for the OROM parsing code after testing with BIOS OROM Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: copy the oem parameters instead of assignDave Jiang1-15/+5
Since the data structure for oem from orom/efi/firmware is the same as what the core uses, we can just do a direct copy instead of assignment. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: update efi variable name and guidDave Jiang1-3/+6
These are the finalized values that the driver can expect to see in production. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: add support for 2 more oem parmetersHenryk Dembkowski7-155/+176
1/ add OEM paramater support for mode_type (MPC vs APC) 2/ add OEM parameter support for max_number_concurrent_device_spin_up 3/ cleanup scic_sds_controller_start_next_phy todo: hook up the amp control afe parameters into the afe init code Signed-off-by: Henryk Dembkowski <[email protected]> Signed-off-by: Jacek Danecki <[email protected]> [cleaned up scic_sds_controller_start_next_phy] Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Adding EFI variable skeletal supportDave Jiang3-5/+68
Adding EFI variable retrieving for OEM parameters. Still need GUID and variable name. Also updated the data struct for oem parameters and hex file for firmware Signed-off-by: Dave Jiang <[email protected]> [fix CONFIG_EFI=n compile error] Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Add support for probing OROM for OEM paramsDan Williams12-427/+453
We need to scan the OROM for signature and grab the OEM parameters. We also need to do the same for EFI. If all fails then we resort to user binary blob, and if that fails then we go to the defaults. Share the format with the create_fw utility so that all possible sources of the parameters are in-sync. Signed-off-by: Dave Jiang <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: reset hardware at initDan Williams1-1/+2
Don't assume the hardware is in a known state at init. Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: task.h compile and checkpatch fixesDan Williams1-23/+19
A usage of "FALSE" leaked in as well as some checkpatch escapes. Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: don't hold scic_lock over calls to sas_task_abort()Jeff Skirvin1-17/+17
In the case where submitted I/Os fail with the status code SCI_FAILURE_REMOTE_DEVICE_RESET_REQUIRED, the execute function now waits until scic_lock is cleared before calling the helper function "isci_request_signal_device_reset" which sets the flag for the pending reset condition on the I/O. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: fix incorrect assumptions about task->dev and task->dev->port being NULLDan Williams1-113/+55
A domain_device has the same lifetime as its related scsi_target. The scsi_target is reference counted based on outstanding commands, therefore it is safe to assume that if we have a valid sas_task that the ->dev pointer is also valid. The asd_sas_port of a domain_device has the same lifetime as the driver so it can also never be NULL as long as the sas_task is valid and the driver is loaded. This also cleans up isci_task_complete_for_upper_layer(), renames it to isci_task_refuse() and notices that the isci_completion_selection parameter was set to isci_perform_normal_io_completion by all callers. Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: add "isci_id" attributeDan Williams1-4/+26
Allow each controller to be identified via sysfs. # cat /sys/class/scsi_host/host13/isci_id 1 Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: All pending requests are terminated before stopping the device.Jeff Skirvin1-0/+4
Make sure all pending I/O including any in the libsas error handler process is cleaned-up. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Always set response/status for requests going into the error path.Jeff Skirvin2-16/+25
In the case of I/O requests being failed because of a required device reset condition, set the response and status to indicate an I/O failure. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Errors in the submit path for SATA devices manage the ap lock.Dan Williams2-59/+87
Since libsas takes the domain device sata_dev.ap->lock before submitting a task, error completions in the submit path for SATA devices must unlock/relock when completing the sas_task back to libsas. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Fixed BUG_ON in isci_abort_task_process_cb callback.Jeff Skirvin1-1/+2
The request may be in the "aborted" or the "completed" state when performing a task management operation on it. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]>
2011-07-03isci: Fix TMF build for SAS/SATA LUN reset cases.Jeff Skirvin2-5/+28
In the case where a SAS or SATA LUN reset TMF is built a NULL pointer dereference occurred because of the (unused) callback data pointer. Signed-off-by: Jeff Skirvin <[email protected]> Signed-off-by: Dan Williams <[email protected]> Signed-off-by: Jacek Danecki <[email protected]>