]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ata: libata-core: Fix ata_pci_shutdown_one()
authorDamien Le Moal <dlemoal@kernel.org>
Mon, 6 Nov 2023 04:00:49 +0000 (13:00 +0900)
committerDamien Le Moal <dlemoal@kernel.org>
Tue, 7 Nov 2023 23:53:55 +0000 (08:53 +0900)
This reverts commit 5b6fba546da246b3d0dd8465c07783e22629cc53.

Commit 5b6fba546da2 ("ata: libata-core: Detach a port devices on
shutdown") modified the function ata_pci_shutdown_one() to stop
(suspend) devices attached to the ports of a PCI AHCI adapter to ensure
that drives are spun down before shutting down a system. However, this
is done only for PCI adapters and not for other types of adapters. This
limitation was addressed with commit 24eca2dce0f8 ("scsi: sd: Introduce
manage_shutdown device flag"). With this, all ATA disks are spun down on
system shutdown, which make the changes introduced with 5b6fba546da2
useless.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
drivers/ata/libata-core.c

index 6fb4e8dc8c3cf8752c98fe29ac068fc2008f52ef..09ed67772fae492323361ab7e94f8a8d4345d2e8 100644 (file)
@@ -6180,24 +6180,10 @@ EXPORT_SYMBOL_GPL(ata_pci_remove_one);
 void ata_pci_shutdown_one(struct pci_dev *pdev)
 {
        struct ata_host *host = pci_get_drvdata(pdev);
-       struct ata_port *ap;
-       unsigned long flags;
        int i;
 
-       /* Tell EH to disable all devices */
-       for (i = 0; i < host->n_ports; i++) {
-               ap = host->ports[i];
-               spin_lock_irqsave(ap->lock, flags);
-               ap->pflags |= ATA_PFLAG_UNLOADING;
-               ata_port_schedule_eh(ap);
-               spin_unlock_irqrestore(ap->lock, flags);
-       }
-
        for (i = 0; i < host->n_ports; i++) {
-               ap = host->ports[i];
-
-               /* Wait for EH to complete before freezing the port */
-               ata_port_wait_eh(ap);
+               struct ata_port *ap = host->ports[i];
 
                ap->pflags |= ATA_PFLAG_FROZEN;