linux/drivers/scsi/isci
Dan Williams 312e0c2455 isci: unify can_queue tracking on the tci_pool, uplevel tag assignment
The tci_pool tracks our outstanding command slots which are also the 'index'
portion of our tags.  Grabbing the tag early in ->lldd_execute_task let's us
drop the isci_host_can_queue() and ->was_tag_assigned_by_user infrastructure.
->was_tag_assigned_by_user required the task context to be duplicated in
request-local buffer.  With the tci established early we can build the
task_context directly into its final location and skip a memcpy.

With the task context buffer at a known address at request construction we
have the opportunity/obligation to also fix sgl handling.  This rework feels
like it belongs in another patch but the sgl handling and task_context are too
intertwined.
1/ fix the 'ab' pair embedded in the task context to point to the 'cd' pair in
   the task context (previously we were prematurely linking to the staging
   buffer).
2/ fix the broken iteration of pio sgls that assumes all sgls are relative to
   the request, and does a dangerous looking reverse lookup of physical
   address to virtual address.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2011-07-03 04:04:51 -07:00
..
firmware isci: Added support for C0 to SCU Driver 2011-07-03 04:04:50 -07:00
host.c isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
host.h isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
init.c isci: Added support for C0 to SCU Driver 2011-07-03 04:04:50 -07:00
isci.h isci: cleanup/optimize queue increment macros 2011-07-03 04:04:51 -07:00
Makefile isci: additional state machine cleanup 2011-07-03 04:04:50 -07:00
phy.c isci: fix frame received locking 2011-07-03 04:04:51 -07:00
phy.h isci: additional state machine cleanup 2011-07-03 04:04:50 -07:00
port_config.c isci: state machine cleanup 2011-07-03 04:04:50 -07:00
port.c isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
port.h isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
probe_roms.c isci: possible buffer overflow in isci_parse_oem_parameters fixed 2011-07-03 04:04:51 -07:00
probe_roms.h isci: Retrieve the EFI variable for OEM parameter 2011-07-03 04:04:50 -07:00
registers.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
remote_device.c isci: Terminate dev requests on FIS err bit rx in NCQ 2011-07-03 04:04:51 -07:00
remote_device.h isci: Terminate dev requests on FIS err bit rx in NCQ 2011-07-03 04:04:51 -07:00
remote_node_context.c isci: Explicitly decode remote node ready and suspended states 2011-07-03 04:04:50 -07:00
remote_node_context.h isci: additional state machine cleanup 2011-07-03 04:04:50 -07:00
remote_node_table.c isci: uplevel request infrastructure 2011-07-03 04:04:47 -07:00
remote_node_table.h isci: unify constants 2011-07-03 04:04:47 -07:00
request.c isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
request.h isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
sas.h isci: fix support for arbitrarily large smp requests 2011-07-03 04:04:51 -07:00
sata.c isci: atomic device lookup and reference counting 2011-07-03 04:04:51 -07:00
sata.h isci: Convert ATA defines to Linux native defines 2011-07-03 04:04:46 -07:00
scu_completion_codes.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
scu_event_codes.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
scu_remote_node_context.h isci: move remote_device handling out of the core 2011-07-03 04:00:38 -07:00
scu_task_context.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
scu_unsolicited_frame.h isci: uplevel register hardware data structures and unsolicited frame handling 2011-07-03 04:04:47 -07:00
task.c isci: unify can_queue tracking on the tci_pool, uplevel tag assignment 2011-07-03 04:04:51 -07:00
task.h isci: atomic device lookup and reference counting 2011-07-03 04:04:51 -07:00
unsolicited_frame_control.c isci: cleanup/optimize queue increment macros 2011-07-03 04:04:51 -07:00
unsolicited_frame_control.h isci: remove 'min memory' infrastructure 2011-07-03 04:04:50 -07:00