Skip to content

Commit

Permalink
[SCSI] ipr: Remove unnecessary memory barriers
Browse files Browse the repository at this point in the history
The ipr driver added some memory barriers in order to ensure
a PowerPC sync instruction was executed prior to sending a
command to the adapter to ensure the command block was
coherent with respect to the PCI bus's view of memory.
However, some time ago, the powerpc architecture writel
macros were changed to include the sync since most drivers
don't properly handle this. So remove these memory barriers
since they are not needed and result in executing twice
as many sync instructions, which has a significant performance
penalty.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
  • Loading branch information
Brian King authored and James Bottomley committed Mar 28, 2012
1 parent 7dd2130 commit a5fb407
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions drivers/scsi/ipr.c
Original file line number Diff line number Diff line change
Expand Up @@ -850,8 +850,6 @@ static void ipr_do_req(struct ipr_cmnd *ipr_cmd,

ipr_trc_hook(ipr_cmd, IPR_TRACE_START, 0);

mb();

ipr_send_command(ipr_cmd);
}

Expand Down Expand Up @@ -985,8 +983,6 @@ static void ipr_send_hcam(struct ipr_ioa_cfg *ioa_cfg, u8 type,

ipr_trc_hook(ipr_cmd, IPR_TRACE_START, IPR_IOA_RES_ADDR);

mb();

ipr_send_command(ipr_cmd);
} else {
list_add_tail(&hostrcb->queue, &ioa_cfg->hostrcb_free_q);
Expand Down Expand Up @@ -5863,14 +5859,12 @@ static int ipr_queuecommand_lck(struct scsi_cmnd *scsi_cmd,
rc = ipr_build_ioadl(ioa_cfg, ipr_cmd);
}

if (likely(rc == 0)) {
mb();
ipr_send_command(ipr_cmd);
} else {
list_move_tail(&ipr_cmd->queue, &ioa_cfg->free_q);
return SCSI_MLQUEUE_HOST_BUSY;
if (unlikely(rc != 0)) {
list_move_tail(&ipr_cmd->queue, &ioa_cfg->free_q);
return SCSI_MLQUEUE_HOST_BUSY;
}

ipr_send_command(ipr_cmd);
return 0;
}

Expand Down Expand Up @@ -6248,8 +6242,6 @@ static unsigned int ipr_qc_issue(struct ata_queued_cmd *qc)
return AC_ERR_INVALID;
}

mb();

ipr_send_command(ipr_cmd);

return 0;
Expand Down

0 comments on commit a5fb407

Please sign in to comment.