linux/drivers/ide
Bart Van Assche b437678187 scsi: ide: Do not set the RQF_PREEMPT flag for sense requests
[ Upstream commit 96d86e6a80 ]

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:10:16 +01:00
..
aec62xx.c
ali14xx.c
alim15x3.c alim15x3: move irq-restore before pci_dev_put() 2018-06-05 16:26:46 -04:00
amd74xx.c
atiixp.c
au1xxx-ide.c
buddha.c
cmd64x.c cmd64x: potential buffer overflow in cmd64x_program_timings() 2020-02-24 08:34:49 +01:00
cmd640.c cmd640: add __init attribute 2016-07-26 15:25:30 -07:00
cs5520.c ide: remove deprecated use of pci api 2015-04-17 15:32:07 -04:00
cs5530.c
cs5535.c
cs5536.c
cy82c693.c
delkin_cb.c
dtc2278.c
falconide.c
gayle.c
hpt366.c ide: mark expected switch fall-throughs 2018-08-13 11:48:54 -07:00
ht6560b.c
icside.c ide: icside: remove incorrect initconst annotation 2016-03-20 16:59:27 -04:00
ide_platform.c
ide-4drives.c
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:10:16 +01:00
ide-cd_ioctl.c block: Switch struct packet_command to use struct scsi_sense_hdr 2018-08-02 15:22:13 -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-cd.c ide-cd: Remove redundant sense buffer 2018-08-02 15:22:37 -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-cs.c
ide-devsets.c block: sanitize blk_get_request calling conventions 2018-05-14 08:55:12 -06: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-disk.c block: sanitize blk_get_request calling conventions 2018-05-14 08:55:12 -06: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-dma-sff.c
ide-dma.c ide: kill ide_toggle_bounce 2018-05-07 07:15:41 +02:00
ide-eh.c block: introduce new block status code type 2017-06-09 09:27:32 -06: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-floppy.c ide: mark expected switch fall-throughs 2018-08-13 11:48:54 -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-gd.c block: convert to device_add_disk() 2016-06-27 12:26:08 -07: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
ide-io.c scsi: ide: Do not set the RQF_PREEMPT flag for sense requests 2021-01-12 20:10:16 +01:00
ide-ioctls.c block: sanitize blk_get_request calling conventions 2018-05-14 08:55:12 -06:00
ide-iops.c ide: don't enable/disable interrupts in force threaded-IRQ mode 2018-06-05 16:26:47 -04:00
ide-legacy.c
ide-lib.c ide: kill ide_toggle_bounce 2018-05-07 07:15:41 +02:00
ide-park.c block: sanitize blk_get_request calling conventions 2018-05-14 08:55:12 -06: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 block: sanitize blk_get_request calling conventions 2018-05-14 08:55:12 -06:00
ide-pnp.c PNP: ide: constify pnp_device_id 2017-08-16 11:25:16 -07:00
ide-probe.c ide: mark expected switch fall-throughs 2018-08-13 11:48:54 -07:00
ide-proc.c ide: fix a typo in the settings proc file name 2019-01-31 08:14:42 +01: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-tape: remove redundant variable buffer_size 2018-08-13 11:48:54 -07:00
ide-taskfile.c ide: mark expected switch fall-throughs 2018-08-13 11:48:54 -07:00
ide-timings.c ide: avoid warning for timings calculation 2017-07-21 04:37:22 +01:00
ide-xfer-mode.c
ide.c treewide: Fix function prototypes for module_param_call() 2017-10-31 15:30:37 +01:00
it821x.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
it8172.c
it8213.c
jmicron.c
Kconfig treewide: simplify Kconfig dependencies for removed archs 2018-03-26 15:55:57 +02:00
macide.c
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ns87415.c
opti621.c
palm_bk3710.c ide: palm_bk3710: add __initdata to palm_bk3710_port_info 2017-02-27 20:43:26 -05:00
pdc202xx_new.c PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
pdc202xx_old.c
piix.c
pmac.c ide: pmac: add of_node_put() 2018-12-21 14:15:18 +01:00
q40ide.c
qd65xx.c
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
rz1000.c
sc1200.c
serverworks.c ide: serverworks: potential overflow in svwks_set_pio_mode() 2020-02-24 08:34:49 +01:00
setup-pci.c ide: pci: free PCI BARs on initialization failure 2017-10-03 14:02:57 -05:00
sgiioc4.c ide: remove deprecated use of pci api 2015-04-17 15:32:07 -04: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 sl82c105: deprecate pci_get_bus_and_slot() 2018-01-11 17:29:04 -06:00
slc90e66.c
tc86c001.c
triflex.c
trm290.c ide: constify ide_dma_ops structures 2016-01-18 14:12:33 -05:00
tx4938ide.c
tx4939ide.c
umc8672.c
via82cxxx.c