Bart Van Assche
eb3e975ac2
scsi: ide: Do not set the RQF_PREEMPT flag for sense requests
...
[ Upstream commit 96d86e6a80a3ab9aff81d12f9f1f2a0da2917d38 ]
RQF_PREEMPT is used for two different purposes in the legacy IDE code:
1. To mark power management requests.
2. To mark requests that should preempt another request. An (old)
explanation of that feature is as follows: "The IDE driver in the Linux
kernel normally uses a series of busywait delays during its
initialization. When the driver executes these busywaits, the kernel
does nothing for the duration of the wait. The time spent in these
waits could be used for other initialization activities, if they could
be run concurrently with these waits.
More specifically, busywait-style delays such as udelay() in module
init functions inhibit kernel preemption because the Big Kernel Lock is
held, while yielding APIs such as schedule_timeout() allow
preemption. This is true because the kernel handles the BKL specially
and releases and reacquires it across reschedules allowed by the
current thread.
This IDE-preempt specification requires that the driver eliminate these
busywaits and replace them with a mechanism that allows other work to
proceed while the IDE driver is initializing."
Since I haven't found an implementation of (2), do not set the PREEMPT flag
for sense requests. This patch causes sense requests to be postponed while
a drive is suspended instead of being submitted to ide_queue_rq().
If it would ever be necessary to restore the IDE PREEMPT functionality,
that can be done by introducing a new flag in struct ide_request.
Link: https://lore.kernel.org/r/20201209052951.16136-4-bvanassche@acm.org
Cc: David S. Miller <davem@davemloft.net>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Can Guo <cang@codeaurora.org>
Cc: Stanley Chu <stanley.chu@mediatek.com>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-01-12 20:16:09 +01:00
..
aec62xx.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
ali14xx.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
alim15x3.c
alim15x3: move irq-restore before pci_dev_put()
2018-06-05 16:26:46 -04:00
amd74xx.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
atiixp.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
au1xxx-ide.c
buddha.c
cmd64x.c
cmd64x: potential buffer overflow in cmd64x_program_timings()
2020-02-24 08:36:53 +01:00
cmd640.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
cs5520.c
cs5530.c
cs5535.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00
cs5536.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333
2019-06-05 17:37:06 +02:00
cy82c693.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
delkin_cb.c
dtc2278.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
falconide.c
gayle.c
hpt366.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
ht6560b.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
icside.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
ide-4drives.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
ide-acpi.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-atapi.c
scsi: ide: Do not set the RQF_PREEMPT flag for sense requests
2021-01-12 20:16:09 +01:00
ide-cd.c
docs: cdrom: convert docs to ReST and rename to *.rst
2019-06-14 14:20:46 -06:00
ide-cd.h
block: Switch struct packet_command to use struct scsi_sense_hdr
2018-08-02 15:22:13 -06:00
ide-cd_ioctl.c
Revert "ide: unexport DISK_EVENT_MEDIA_CHANGE for ide-gd and ide-cd"
2019-04-12 13:35:25 -06:00
ide-cd_verbose.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-cs.c
ide-devsets.c
ide: don't use req->special
2018-11-10 08:03:52 -07:00
ide-disk.c
ide: don't use req->special
2018-11-10 08:03:52 -07:00
ide-disk.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-disk_ioctl.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-disk_proc.c
ide: replace ->proc_fops with ->proc_show
2018-05-16 07:24:30 +02:00
ide-dma-sff.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-dma.c
ide: kill ide_toggle_bounce
2018-05-07 07:15:41 +02:00
ide-eh.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-floppy.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
2019-03-11 09:34:00 -07:00
ide-floppy.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-floppy_ioctl.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-floppy_proc.c
ide: replace ->proc_fops with ->proc_show
2018-05-16 07:24:30 +02:00
ide-gd.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
ide-gd.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-generic.c
treewide: simplify Kconfig dependencies for removed archs
2018-03-26 15:55:57 +02:00
ide-io-std.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-io.c
scsi: ide: Do not set the RQF_PREEMPT flag for sense requests
2021-01-12 20:16:09 +01:00
ide-ioctls.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-iops.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-legacy.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-lib.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-park.c
ide: ensure atapi sense request aren't preempted
2019-01-31 08:25:09 -07:00
ide-pci-generic.c
ide-pio-blacklist.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-pm.c
ide: don't acquire queue_lock in ide_complete_pm_rq
2018-11-16 09:17:02 -07:00
ide-pnp.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 47
2019-05-24 17:27:13 +02:00
ide-probe.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-proc.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-scan-pci.c
ide: fix IRQ assignment for PCI bus order probing
2017-10-03 14:03:31 -05:00
ide-sysfs.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ide-tape.c
ide: don't use req->special
2018-11-10 08:03:52 -07:00
ide-taskfile.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide-timings.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156
2019-05-30 11:26:35 -07:00
ide-xfer-mode.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
ide.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
ide_platform.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
it821x.c
treewide: kzalloc() -> kcalloc()
2018-06-12 16:19:22 -07:00
it8172.c
it8213.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
jmicron.c
Kconfig
ide: remove the sgiioc4 driver
2019-08-16 11:33:56 -07:00
macide.c
Makefile
ide: remove the sgiioc4 driver
2019-08-16 11:33:56 -07:00
ns87415.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
opti621.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
palm_bk3710.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61
2019-05-24 17:36:45 +02:00
pdc202xx_new.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
pdc202xx_old.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
piix.c
pmac.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
q40ide.c
qd65xx.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
qd65xx.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
rapide.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
rz1000.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
sc1200.c
serverworks.c
ide: serverworks: potential overflow in svwks_set_pio_mode()
2020-02-24 08:36:53 +01:00
setup-pci.c
ide: pci: free PCI BARs on initialization failure
2017-10-03 14:02:57 -05:00
siimage.c
block: introduce new block status code type
2017-06-09 09:27:32 -06:00
sis5513.c
ide: mark expected switch fall-throughs
2018-08-13 11:48:54 -07:00
sl82c105.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
slc90e66.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
tc86c001.c
triflex.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333
2019-06-05 17:37:06 +02:00
trm290.c
tx4938ide.c
tx4939ide.c
drivers: Remove explicit invocations of mmiowb()
2019-04-08 12:01:02 +01:00
umc8672.c
treewide: Add SPDX license identifier for more missed files
2019-05-21 10:50:45 +02:00
via82cxxx.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500
2019-06-19 17:09:55 +02:00