50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
|
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||
|
Date: Thu, 12 Apr 2018 09:16:22 +0200
|
||
|
Subject: [PATCH] [SCSI] libsas: remove irq save in sas_ata_qc_issue()
|
||
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.18/older/patches-4.18-rc8-rt1.tar.xz
|
||
|
|
||
|
[ upstream commit 2da11d4262639dc0e2fabc6a70886db57af25c43 ]
|
||
|
|
||
|
Since commit 312d3e56119a ("[SCSI] libsas: remove ata_port.lock
|
||
|
management duties from lldds") the sas_ata_qc_issue() function unlocks
|
||
|
the ata_port.lock and disables interrupts before doing so.
|
||
|
That lock is always taken with disabled interrupts so at this point, the
|
||
|
interrupts are already disabled. There is no need to disable the
|
||
|
interrupts before the unlock operation because they are already
|
||
|
disabled.
|
||
|
Restoring the interrupt state later does not change anything because
|
||
|
they were disabled and remain disabled. Therefore remove the operations
|
||
|
which do not change the behaviour.
|
||
|
|
||
|
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||
|
---
|
||
|
drivers/scsi/libsas/sas_ata.c | 3 ---
|
||
|
1 file changed, 3 deletions(-)
|
||
|
|
||
|
--- a/drivers/scsi/libsas/sas_ata.c
|
||
|
+++ b/drivers/scsi/libsas/sas_ata.c
|
||
|
@@ -176,7 +176,6 @@ static void sas_ata_task_done(struct sas
|
||
|
|
||
|
static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
|
||
|
{
|
||
|
- unsigned long flags;
|
||
|
struct sas_task *task;
|
||
|
struct scatterlist *sg;
|
||
|
int ret = AC_ERR_SYSTEM;
|
||
|
@@ -190,7 +189,6 @@ static unsigned int sas_ata_qc_issue(str
|
||
|
/* TODO: audit callers to ensure they are ready for qc_issue to
|
||
|
* unconditionally re-enable interrupts
|
||
|
*/
|
||
|
- local_irq_save(flags);
|
||
|
spin_unlock(ap->lock);
|
||
|
|
||
|
/* If the device fell off, no sense in issuing commands */
|
||
|
@@ -252,7 +250,6 @@ static unsigned int sas_ata_qc_issue(str
|
||
|
|
||
|
out:
|
||
|
spin_lock(ap->lock);
|
||
|
- local_irq_restore(flags);
|
||
|
return ret;
|
||
|
}
|
||
|
|