Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4cddaedb authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "scsi: Allow auto suspend override by low-level driver"

parents 4dee3b9c f261a170
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -935,6 +935,10 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,

	transport_configure_device(&sdev->sdev_gendev);

	/* The LLD can override auto suspend tunables in ->slave_configure() */
	sdev->use_rpm_auto = 0;
	sdev->autosuspend_delay = SCSI_DEFAULT_AUTOSUSPEND_DELAY;

	if (sdev->host->hostt->slave_configure) {
		ret = sdev->host->hostt->slave_configure(sdev);
		if (ret) {
+2 −1
Original line number Diff line number Diff line
@@ -883,6 +883,7 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
	device_enable_async_suspend(&sdev->sdev_gendev);
	scsi_autopm_get_target(starget);
	pm_runtime_set_active(&sdev->sdev_gendev);
	if (!sdev->use_rpm_auto)
		pm_runtime_forbid(&sdev->sdev_gendev);
	pm_runtime_enable(&sdev->sdev_gendev);
	scsi_autopm_put_target(starget);
+3 −0
Original line number Diff line number Diff line
@@ -2843,6 +2843,9 @@ static void sd_probe_async(void *data, async_cookie_t cookie)
	}

	blk_pm_runtime_init(sdp->request_queue, dev);
	if (sdp->autosuspend_delay >= 0)
		pm_runtime_set_autosuspend_delay(dev, sdp->autosuspend_delay);

	add_disk(gd);
	if (sdkp->capacity)
		sd_dif_config_host(sdkp);
+4 −0
Original line number Diff line number Diff line
@@ -159,6 +159,10 @@ struct scsi_device {
	unsigned is_visible:1;	/* is the device visible in sysfs */
	unsigned wce_default_on:1;	/* Cache is ON by default */
	unsigned no_dif:1;	/* T10 PI (DIF) should be disabled */
	unsigned use_rpm_auto:1; /* Enable runtime PM auto suspend */

#define SCSI_DEFAULT_AUTOSUSPEND_DELAY  -1
	int autosuspend_delay;

	atomic_t disk_events_disable_depth; /* disable depth for disk events */