linux-stable/drivers/firewire
Damien Le Moal 3cc2ffe5c1 scsi: sd: Differentiate system and runtime start/stop management
The underlying device and driver of a SCSI disk may have different
system and runtime power mode control requirements. This is because
runtime power management affects only the SCSI disk, while system level
power management affects all devices, including the controller for the
SCSI disk.

For instance, issuing a START STOP UNIT command when a SCSI disk is
runtime suspended and resumed is fine: the command is translated to a
STANDBY IMMEDIATE command to spin down the ATA disk and to a VERIFY
command to wake it up. The SCSI disk runtime operations have no effect
on the ata port device used to connect the ATA disk. However, for
system suspend/resume operations, the ATA port used to connect the
device will also be suspended and resumed, with the resume operation
requiring re-validating the device link and the device itself. In this
case, issuing a VERIFY command to spinup the disk must be done before
starting to revalidate the device, when the ata port is being resumed.
In such case, we must not allow the SCSI disk driver to issue START STOP
UNIT commands.

Allow a low level driver to refine the SCSI disk start/stop management
by differentiating system and runtime cases with two new SCSI device
flags: manage_system_start_stop and manage_runtime_start_stop. These new
flags replace the current manage_start_stop flag. Drivers setting the
manage_start_stop are modifed to set both new flags, thus preserving the
existing start/stop management behavior. For backward compatibility, the
old manage_start_stop sysfs device attribute is kept as a read-only
attribute showing a value of 1 for devices enabling both new flags and 0
otherwise.

Fixes: 0a85890559 ("ata,scsi: do not issue START STOP UNIT on resume")
Cc: stable@vger.kernel.org
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
2023-09-28 21:23:00 +09:00
..
.kunitconfig firewire: add KUnit test to check layout of UAPI structures 2023-05-30 08:12:39 +09:00
Kconfig firewire: add KUnit test to check layout of UAPI structures 2023-05-30 08:12:39 +09:00
Makefile firewire: add KUnit test to check layout of UAPI structures 2023-05-30 08:12:39 +09:00
core-card.c Merge branch 'for-linus' into for-next 2022-05-23 07:48:27 +02:00
core-cdev.c firewire: cdev: implement new event relevant to phy packet with time stamp 2023-05-30 08:12:40 +09:00
core-device.c Revert "firewire: core: obsolete usage of GFP_ATOMIC at building node tree" 2023-09-15 18:37:52 +09:00
core-iso.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
core-topology.c Revert "firewire: core: obsolete usage of GFP_ATOMIC at building node tree" 2023-09-15 18:37:52 +09:00
core-transaction.c firewire: core: implement variations to send request and wait for response with time stamp 2023-05-30 08:12:40 +09:00
core.h firewire: core: use union for callback of transaction completion 2023-05-30 08:12:40 +09:00
init_ohci1394_dma.c firewire: init_ohci1394_dma: use correct function names in comments 2023-04-24 09:19:35 +09:00
net.c firewire: net: fix use after free in fwnet_finish_incoming_packet() 2023-06-24 14:03:46 +09:00
nosy-user.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nosy.c firewire: nosy: switch from 'pci_' to 'dma_' API 2021-07-05 22:23:15 +02:00
nosy.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ohci.c firewire: ohci: release buffer for AR req/resp contexts when managed resource is released 2023-06-06 07:54:24 +09:00
ohci.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sbp2.c scsi: sd: Differentiate system and runtime start/stop management 2023-09-28 21:23:00 +09:00
uapi-test.c firewire: fix build failure due to missing module license 2023-05-30 19:37:29 +09:00