aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/host.c
diff options
context:
space:
mode:
authorTomasz Chudy <Tomasz.Chudy@intel.com>2011-02-25 05:25:09 -0500
committerDan Williams <dan.j.williams@intel.com>2011-07-03 06:55:28 -0400
commita8d4b9fe911c7d48f7a75c37eb1bfa3273547d97 (patch)
tree8b5fbdb2b6ea0e31dfcfc4c336b8bb5f4ba7d84a /drivers/scsi/isci/host.c
parent7c40a8035815479c7c12ab0cdcea71e0f4c3a9c8 (diff)
isci: workaround port task scheduler starvation issue
There is a condition whereby TCs (task contexts) can jump to the head of the round robin queue causing indefinite starvation of pending tasks. Posting a TC to a suspended RNC (remote node context) causes the hardware to select that task first, but since the RNC is suspended the scheduler proceeds to the next task in the expected round robin fashion, restoring TC arbitration fairness. Signed-off-by: Tomasz Chudy <tomasz.chudy@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/host.c')
-rw-r--r--drivers/scsi/isci/host.c7
1 files changed, 0 insertions, 7 deletions
diff --git a/drivers/scsi/isci/host.c b/drivers/scsi/isci/host.c
index 1bc91f2b4f93..40614e9ab41b 100644
--- a/drivers/scsi/isci/host.c
+++ b/drivers/scsi/isci/host.c
@@ -381,7 +381,6 @@ int isci_host_init(struct isci_host *isci_host)
381 int index = 0; 381 int index = 0;
382 enum sci_status status; 382 enum sci_status status;
383 struct scic_sds_controller *controller; 383 struct scic_sds_controller *controller;
384 struct scic_sds_port *scic_port;
385 union scic_oem_parameters scic_oem_params; 384 union scic_oem_parameters scic_oem_params;
386 union scic_user_parameters scic_user_params; 385 union scic_user_parameters scic_user_params;
387 386
@@ -517,11 +516,5 @@ int isci_host_init(struct isci_host *isci_host)
517 for (index = 0; index < SCI_MAX_PHYS; index++) 516 for (index = 0; index < SCI_MAX_PHYS; index++)
518 isci_phy_init(&isci_host->phys[index], isci_host, index); 517 isci_phy_init(&isci_host->phys[index], isci_host, index);
519 518
520 /* Start the ports */
521 for (index = 0; index < SCI_MAX_PORTS; index++) {
522 scic_controller_get_port_handle(controller, index, &scic_port);
523 scic_port_start(scic_port);
524 }
525
526 return 0; 519 return 0;
527} 520}