Patch "scsi: mpt3sas: Fix timeouts observed while reenabling IRQ" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: mpt3sas: Fix timeouts observed while reenabling IRQ

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-mpt3sas-fix-timeouts-observed-while-reenabling-.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 54ac739bffcd2cccc335dec4d43daaa7273c5153
Author: Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx>
Date:   Mon Nov 2 12:57:46 2020 +0530

    scsi: mpt3sas: Fix timeouts observed while reenabling IRQ
    
    [ Upstream commit 5feed64f9199ff90c4239971733f23f30aeb2484 ]
    
    While reenabling the IRQ after irq poll there may be small time window
    where HBA firmware has posted some replies and raise the interrupts but
    driver has not received the interrupts. So we may observe I/O timeouts as
    the driver has not processed the replies as interrupts got missed while
    reenabling the IRQ.
    
    To fix this issue the driver has to go for one more round of processing the
    reply descriptors from reply descriptor post queue after enabling the IRQ.
    
    Link: https://lore.kernel.org/r/20201102072746.27410-1-sreekanth.reddy@xxxxxxxxxxxx
    Reported-by: Tomas Henzl <thenzl@xxxxxxxxxx>
    Reviewed-by: Tomas Henzl <thenzl@xxxxxxxxxx>
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 3d58d24de6b61..8be8c510fdf79 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -1641,6 +1641,13 @@ _base_irqpoll(struct irq_poll *irqpoll, int budget)
 		reply_q->irq_poll_scheduled = false;
 		reply_q->irq_line_enable = true;
 		enable_irq(reply_q->os_irq);
+		/*
+		 * Go for one more round of processing the
+		 * reply descriptor post queue incase if HBA
+		 * Firmware has posted some reply descriptors
+		 * while reenabling the IRQ.
+		 */
+		_base_process_reply_queue(reply_q);
 	}
 
 	return num_entries;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux