Patch "ata: libata-eh: do not thaw the port twice in ata_eh_reset()" has been added to the 6.5-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

    ata: libata-eh: do not thaw the port twice in ata_eh_reset()

to the 6.5-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:
     ata-libata-eh-do-not-thaw-the-port-twice-in-ata_eh_r.patch
and it can be found in the queue-6.5 subdirectory.

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



commit ebd880d907f81b4546a63bc5aa37e61801d3d3ec
Author: Niklas Cassel <niklas.cassel@xxxxxxx>
Date:   Thu Sep 14 00:19:17 2023 +0200

    ata: libata-eh: do not thaw the port twice in ata_eh_reset()
    
    [ Upstream commit 7a3bc2b3989e05bbaa904a63279049a401491c84 ]
    
    commit 1e641060c4b5 ("libata: clear eh_info on reset completion") added
    a workaround that broke the retry mechanism in ATA EH.
    
    Tejun himself suggested to remove this workaround when it was identified
    to cause additional problems:
    https://lore.kernel.org/linux-ide/20110426135027.GI878@xxxxxxxxxxxxxx/
    
    He even said:
    "Hmm... it seems I wasn't thinking straight when I added that work around."
    https://lore.kernel.org/linux-ide/20110426155229.GM878@xxxxxxxxxxxxxx/
    
    While removing the workaround solved the issue, however, the workaround was
    kept to avoid "spurious hotplug events during reset", and instead another
    workaround was added on top of the existing workaround in commit
    8c56cacc724c ("libata: fix unexpectedly frozen port after ata_eh_reset()").
    
    Because these IRQs happened when the port was frozen, we know that they
    were actually a side effect of PxIS and IS.IPS(x) not being cleared before
    the COMRESET. This is now done in commit 94152042eaa9 ("ata: libahci: clear
    pending interrupt status"), so these workarounds can now be removed.
    
    Since commit 1e641060c4b5 ("libata: clear eh_info on reset completion") has
    now been reverted, the ATA EH retry mechanism is functional again, so there
    is once again no need to thaw the port more than once in ata_eh_reset().
    
    This reverts "the workaround on top of the workaround" introduced in commit
    8c56cacc724c ("libata: fix unexpectedly frozen port after ata_eh_reset()").
    
    Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx>
    Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index d7914c7d1a0d1..960ef5c6f2c10 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2829,9 +2829,6 @@ int ata_eh_reset(struct ata_link *link, int classify,
 		slave->eh_info.serror = 0;
 	spin_unlock_irqrestore(link->ap->lock, flags);
 
-	if (ata_port_is_frozen(ap))
-		ata_eh_thaw_port(ap);
-
 	/*
 	 * Make sure onlineness and classification result correspond.
 	 * Hotplug could have happened during reset and some



[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