linux/drivers/scsi
Jan Kiszka fb51ccbf21 PCI: Rework config space blocking services
pci_block_user_cfg_access was designed for the use case that a single
context, the IPR driver, temporarily delays user space accesses to the
config space via sysfs. This assumption became invalid by the time
pci_dev_reset was added as locking instance. Today, if you run two loops
in parallel that reset the same device via sysfs, you end up with a
kernel BUG as pci_block_user_cfg_access detect the broken assumption.

This reworks the pci_block_user_cfg_access to a sleeping service
pci_cfg_access_lock and an atomic-compatible variant called
pci_cfg_access_trylock. The former not only blocks user space access as
before but also waits if access was already locked. The latter service
just returns false in this case, allowing the caller to resolve the
conflict instead of raising a BUG.

Adaptions of the ipr driver were originally written by Brian King.

Acked-by: Brian King <brking@linux.vnet.ibm.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2012-01-06 12:10:33 -08:00
..
aacraid [SCSI] aacraid: controller hangs if kernel uses non-default ASPM policy 2011-11-11 08:19:01 -06:00
aic7xxx aic7xxx: fix Kconfig references to READMEs 2011-10-10 23:52:56 +02:00
aic7xxx_old
aic94xx Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2011-10-28 16:44:18 -07:00
arcmsr
arm
be2iscsi scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
bfa scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
bnx2fc [SCSI] bnx2fc: Bumped version to 1.0.9 2011-10-30 14:05:52 +04:00
bnx2i [SCSI] bnx2i: Fixed kernel panic caused by unprotected task->sc->request deref 2011-12-14 17:05:23 +04:00
cxgbi scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
device_handler Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
dpt atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
fcoe [SCSI] fcoe: fix fcoe in a DCB environment by adding DCB notifiers to set skb priority 2011-12-15 11:02:07 +04:00
fnic
ibmvscsi
isci [SCSI] isci: overriding max_concurr_spinup oem parameter by max(oem, user) 2011-10-31 13:23:18 +04:00
libfc Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
libsas scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
lpfc scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
megaraid scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
mpt2sas [SCSI] mpt2sas: _scsih_smart_predicted_fault uses GFP_KERNEL in interrupt context 2011-12-12 12:20:49 +04:00
mvsas [SCSI] mv_sas: OCZ RevoDrive3 & zDrive R4 support 2011-10-31 13:29:01 +04:00
osd scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
pcmcia
pm8001 [SCSI] isci: export phy events via ->lldd_control_phy() 2011-10-02 13:24:26 -05:00
qla2xxx [SCSI] qla2xxx: Update version number to 8.03.07.12-k. 2011-12-12 14:08:58 +04:00
qla4xxx [SCSI] qla4xxx: check for failed conn setup 2011-12-14 15:40:44 +04:00
sym53c8xx_2
.gitignore
3w-9xxx.c [SCSI] 3w-9xxx: fix iommu_iova leak 2011-09-26 09:28:58 -05:00
3w-9xxx.h
3w-sas.c
3w-sas.h
3w-xxxx.c
3w-xxxx.h
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
a2091.h
a3000.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
a3000.h
a4000t.c
advansys.c
aha152x.c
aha152x.h
aha1542.c
aha1542.h
aha1740.c
aha1740.h
aic7xxx_old.c
atari_NCR5380.c
atari_scsi.c
atari_scsi.h
atp870u.c
atp870u.h
BusLogic.c
BusLogic.h
bvme6000_scsi.c
ch.c
constants.c
dc395x.c
dc395x.h
dmx3191d.c
dpt_i2o.c
dpti.h
dtc.c
dtc.h
eata_generic.h
eata_pio.c
eata_pio.h
eata.c
esp_scsi.c
esp_scsi.h
fd_mcs.c
fdomain.c
fdomain.h
FlashPoint.c
g_NCR5380_mmio.c
g_NCR5380.c
g_NCR5380.h
gdth_ioctl.h
gdth_proc.c
gdth_proc.h
gdth.c
gdth.h
gvp11.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
gvp11.h
hosts.c [SCSI] Make scsi_free_queue() kill pending SCSI commands 2011-10-30 13:20:28 +04:00
hpsa_cmd.h [SCSI] hpsa: fix potential array overflow in hpsa_update_scsi_devices 2011-10-30 14:34:04 +04:00
hpsa.c [SCSI] hpsa: Disable ASPM 2011-11-14 10:47:01 -06:00
hpsa.h [SCSI] hpsa: detect controller lockup 2011-10-30 14:35:01 +04:00
hptiop.c
hptiop.h
ibmmca.c
imm.c
imm.h
in2000.c
in2000.h
initio.c
initio.h
ipr.c PCI: Rework config space blocking services 2012-01-06 12:10:33 -08:00
ipr.h PCI: Rework config space blocking services 2012-01-06 12:10:33 -08:00
ips.c
ips.h
iscsi_boot_sysfs.c
iscsi_tcp.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
iscsi_tcp.h
jazz_esp.c
Kconfig Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2011-11-06 18:54:53 -08:00
lasi700.c
libiscsi_tcp.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
libiscsi.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
libsrp.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
mac53c94.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
mac53c94.h
mac_esp.c [SCSI] mac_esp: remove redundant mutual exclusion 2011-09-22 15:10:18 +04:00
mac_scsi.c
mac_scsi.h
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2011-10-28 16:44:18 -07:00
megaraid.c
megaraid.h
mesh.c
mesh.h
mvme16x_scsi.c
mvme147.c
mvme147.h
mvumi.c [SCSI] mvumi: Add Marvell UMI driver 2011-08-27 08:36:58 -06:00
mvumi.h [SCSI] mvumi: Add Marvell UMI driver 2011-08-27 08:36:58 -06:00
ncr53c8xx.c
ncr53c8xx.h
NCR53c406a.c
NCR5380.c
NCR5380.h
NCR_D700.c
NCR_D700.h
NCR_Q720.c
NCR_Q720.h
nsp32_debug.c
nsp32_io.h
nsp32.c
nsp32.h
osst_detect.h
osst_options.h
osst.c
osst.h
pas16.c
pas16.h
pmcraid.c [SCSI] pmcraid: pmcraid_chr_ioctl uses incorrect argument order to kmalloc() 2011-10-30 14:06:58 +04:00
pmcraid.h Remove unneeded version.h includes from drivers/scsi/ 2011-09-15 14:57:07 +02:00
ppa.c
ppa.h
ps3rom.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
qla1280.c
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti.c [SCSI] qlogicpti: fix timeout 2011-10-16 10:58:52 -05:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_debug.c
scsi_devinfo.c
scsi_error.c [SCSI] Fix out of spec CD-ROM problem with media change 2011-08-27 08:36:41 -06:00
scsi_ioctl.c
scsi_lib_dma.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
scsi_lib.c [SCSI] Silencing 'killing requests for dead queue' 2011-11-09 12:07:07 -06:00
scsi_logging.h
scsi_module.c
scsi_netlink.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
scsi_pm.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
scsi_priv.h
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c [SCSI] fix WARNING: at drivers/scsi/scsi_lib.c:1704 2011-11-09 12:05:23 -06:00
scsi_sysctl.c
scsi_sysfs.c [SCSI] scsi: Added support for adapter and firmware reset 2011-08-27 08:36:46 -06:00
scsi_tgt_if.c scsi: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:31:23 -04:00
scsi_tgt_lib.c
scsi_tgt_priv.h
scsi_trace.c
scsi_transport_api.h
scsi_transport_fc_internal.h
scsi_transport_fc.c
scsi_transport_iscsi.c [SCSI] scsi_transport_iscsi: Fix documentation os parameter 2011-11-03 11:16:53 +04:00
scsi_transport_sas.c [SCSI] libsas: disable scanning lun > 0 on ata devices 2011-10-02 12:29:19 -05:00
scsi_transport_spi.c [SCSI] scsi_transport_spi: Export host width and HBA id 2011-07-26 13:53:50 +04:00
scsi_transport_srp_internal.h
scsi_transport_srp.c
scsi_typedefs.h
scsi_wait_scan.c
scsi.c
scsi.h
scsicam.c
sd_dif.c
sd.c [SCSI] sd: remove arbitrary SD_MAX_DISKS namespace limit 2011-10-30 12:58:11 +04:00
sd.h [SCSI] sd: remove arbitrary SD_MAX_DISKS namespace limit 2011-10-30 12:58:11 +04:00
ses.c
sg.c scsi/sg: use printk_ratelimited instead of printk_ratelimit 2011-09-15 14:05:25 +02:00
sgiwd93.c
sim710.c
sni_53c710.c
sr_ioctl.c scsi: Fix up files implicitly depending on module.h inclusion 2011-10-31 19:31:24 -04:00
sr_vendor.c
sr.c [SCSI] sr: check_events() ignore GET_EVENT when TUR says otherwise 2011-07-21 14:15:58 -07:00
sr.h [SCSI] sr: check_events() ignore GET_EVENT when TUR says otherwise 2011-07-21 14:15:58 -07:00
st_options.h
st.c [SCSI] st: fix race in st_scsi_execute_end 2011-10-30 13:27:28 +04:00
st.h
stex.c
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sun_esp.c
sym53c416.c
sym53c416.h
t128.c
t128.h
tmscsim.c
tmscsim.h
u14-34f.c
ultrastor.c
ultrastor.h
vmw_pvscsi.c
vmw_pvscsi.h
wd33c93.c
wd33c93.h
wd7000.c
zalon.c
zorro7xx.c