linux/drivers/ide
Bart Van Assche 96d86e6a80 scsi: ide: Do not set the RQF_PREEMPT flag for sense requests
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>
2020-12-09 11:41:42 -05: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
buddha.c
cmd64x.c cmd64x: potential buffer overflow in cmd64x_program_timings() 2020-01-20 13:38:27 +01:00
cmd640.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
cs5520.c ide: remove deprecated use of pci api 2015-04-17 15:32:07 -04:00
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 m68k/atari: Convert Falcon IDE drivers to platform drivers 2019-11-18 10:18:59 +01:00
gayle.c
hpt366.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ht6560b.c ide: ht6560b: Fix cast to pointer from integer of different size 2020-01-20 13:38:26 +01:00
icside.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
ide-4drives.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
ide-acpi.c treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
ide-atapi.c scsi: ide: Do not set the RQF_PREEMPT flag for sense requests 2020-12-09 11:41:42 -05: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-cd.c ide-cd: remove idecd_revalidate_disk 2020-09-10 09:32:31 -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 ide: don't use req->special 2018-11-10 08:03:52 -07: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 ide-gd: stop using the disk events mechanism 2020-09-10 09:32:31 -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 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_ioctl.c compat_ioctl: move HDIO ioctl handling into drivers/ide 2020-01-03 09:42:52 +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-gd: stop using the disk events mechanism 2020-09-10 09:32:31 -06:00
ide-floppy.h compat_ioctl: ide: floppy: add handler 2020-01-03 09:33:24 +01:00
ide-gd.c block: move the NEED_PART_SCAN flag to struct gendisk 2020-09-23 10:43:18 -06: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: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
ide-io.c scsi: ide: Do not set the RQF_PREEMPT flag for sense requests 2020-12-09 11:41:42 -05:00
ide-ioctls.c block: add a bdev_is_partition helper 2020-09-25 08:18:57 -06:00
ide-iops.c ide: remove unnecessary touch_softlockup_watchdog 2020-01-20 13:38:26 +01: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: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ide-proc.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
ide-scan-pci.c drivers/ide: Fix build regression. 2020-04-04 18:07:59 -07:00
ide-sysfs.c treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
ide-tape.c compat_ioctl: move HDIO ioctl handling into drivers/ide 2020-01-03 09:42:52 +01:00
ide-taskfile.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05: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
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/macide: Convert Mac IDE driver to platform driver 2020-09-28 10:48:17 +02:00
macide.c ide/macide: Convert Mac IDE driver to platform driver 2020-09-28 10:48:17 +02:00
Makefile ide: remove no longer used au1xxx-ide driver 2020-03-24 15:53:38 +01: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 ide: remove set but not used variable 'hwif' 2020-01-20 13:38:26 +01:00
q40ide.c
qd65xx.c ide: qd65xx: Fix cast to pointer from integer of different size 2020-01-20 13:38:27 +01: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-01-20 13:38:27 +01:00
setup-pci.c ide: pci: free PCI BARs on initialization failure 2017-10-03 14:02:57 -05:00
siimage.c ide: Use dev_get_drvdata where possible 2019-07-23 13:04:54 -07:00
sis5513.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05: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 ide: constify ide_dma_ops structures 2016-01-18 14:12:33 -05:00
tx4938ide.c ide: Use pr_warn instead of pr_warning 2019-10-18 15:00:21 +02:00
tx4939ide.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2020-01-30 07:39:10 -08:00
umc8672.c treewide: Remove uninitialized_var() usage 2020-07-16 12:35:15 -07:00
via82cxxx.c ide: Use dev_get_drvdata where possible 2019-07-23 13:04:54 -07:00