linux/drivers/scsi
Anton Blanchard 8f83d76880 [SCSI] ibmvscsi: Fix oops when an interrupt is pending during probe
A driver needs to be ready to take an interrupt as soon as it registers
an interrupt handler. I noticed the following oops when testing kdump:

ipr: IBM Power RAID SCSI Device Driver version: 2.5.0 (February 11, 2010)
ibmvscsi 30000002: SRP_VERSION: 16.a
ibmvscsi 30000002: SRP_VERSION: 16.a
Unable to handle kernel paging request for data at address 0x00000000
...
pc: c000000004085e34: .tasklet_action+0xf4/0x1dc
...
c000000004086fe4 .__do_softirq+0x16c/0x2c0
c00000000403138c .call_do_softirq+0x14/0x24
c00000000400ee14 .do_softirq+0xa0/0x104
c00000000408690c .irq_exit+0x70/0xd0
c00000000400f190 .do_IRQ+0x214/0x2a8
c000000004004804 hardware_interrupt_entry+0x1c/0x98
--- Exception: 501 (Hardware Interrupt) at c00000000400c544 .raw_local_irq_restore+0x48/0x54
c00000000465d2a8 ._raw_spin_unlock_irqrestore+0x74/0xa0
c0000000040e7f00 .__setup_irq+0x2ec/0x3f0
c0000000040e8198 .request_threaded_irq+0x194/0x22c
c00000000446d854 .rpavscsi_init_crq_queue+0x284/0x3f0
c00000000446c764 .ibmvscsi_probe+0x688/0x710
c00000000402903c .vio_bus_probe+0x37c/0x3e4
c000000004403f10 .driver_probe_device+0xec/0x1b8
c000000004404088 .__driver_attach+0xac/0xf4
c000000004403184 .bus_for_each_dev+0x98/0x104
c000000004403c98 .driver_attach+0x40/0x60
c0000000044026f0 .bus_add_driver+0x154/0x324
c0000000044045d0 .driver_register+0xe8/0x1ac
c00000000402b2a8 .vio_register_driver+0x54/0x74
c000000004933ea4 .ibmvscsi_module_init+0x80/0xc0
c000000004009834 .do_one_initcall+0x98/0x1d8
c0000000049005b4 .kernel_init+0x27c/0x33c
c000000004031550 .kernel_thread+0x54/0x70

srp_task needs to be setup before request_irq. The patch below fixes the oops.

Signed-off-by: Anton Blanchard <anton@samba.org>
Acked-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-07-27 11:53:23 -05:00
..
aacraid Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-05-27 10:28:11 -07:00
aic7xxx
aic7xxx_old
aic94xx
arcmsr [SCSI] arcmsr: Support HW reset for EH and polling scheme for scsi device 2010-05-25 10:20:41 -05:00
arm
be2iscsi [SCSI] be2iscsi: correct return value in mgmt_invalidate_icds() 2010-05-24 11:11:03 -05:00
bfa [SCSI] bfa: fix system crash when reading sysfs fc_host statistics 2010-05-25 10:05:40 -05:00
bnx2i [SCSI] Merge scsi-misc-2.6 into scsi-rc-fixes-2.6 2010-05-18 10:37:41 -04:00
cxgb3i [SCSI] cxgb3i: Fix error path for module init 2010-05-02 15:35:23 -04:00
device_handler [SCSI] scsi_dh_emc: request flag cleanup 2010-04-11 14:04:02 -05:00
dpt
fcoe kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN 2010-05-25 08:07:02 -07:00
fnic [SCSI] fcoe, fnic, libfc: increased CDB size to 16 bytes for fcoe. 2010-04-11 14:02:39 -05:00
ibmvscsi [SCSI] ibmvscsi: Fix oops when an interrupt is pending during probe 2010-07-27 11:53:23 -05:00
libfc [SCSI] libfc: Move the port_id into lport 2010-05-16 22:22:34 -04:00
libsas Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-05-21 07:19:18 -07:00
lpfc sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
megaraid scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
mpt2sas kernel-wide: replace USHORT_MAX, SHORT_MAX and SHORT_MIN with USHRT_MAX, SHRT_MAX and SHRT_MIN 2010-05-25 08:07:02 -07:00
mvsas [SCSI] mvsas: fix hot plug handling and IO issues 2010-04-11 14:44:01 -05:00
osd
pcmcia pcmcia: dev_node removal (write-only drivers) 2010-05-10 10:23:14 +02:00
pm8001 [SCSI] pm8001: potential null dereference in pm8001_dev_gone_notify() 2010-05-02 11:04:23 -04:00
qla2xxx sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
qla4xxx [SCSI] Merge scsi-misc-2.6 into scsi-rc-fixes-2.6 2010-05-18 10:37:41 -04:00
sym53c8xx_2
.gitignore
3w-9xxx.c Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
3w-9xxx.h
3w-sas.c Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
3w-sas.h
3w-xxxx.c Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
3w-xxxx.h
53c700_d.h_shipped
53c700.c
53c700.h
53c700.scr
a100u2w.c
a100u2w.h
a2091.c m68k/scsi: a2091 - Do not use legacy Scsi_Host.base 2010-05-26 19:51:08 +02:00
a2091.h m68k/scsi: a2091 - Kill a2091_scsiregs typedef 2010-05-26 19:51:07 +02:00
a3000.c m68k/scsi: a3000 - Do not use legacy Scsi_Host.base 2010-05-26 19:51:08 +02:00
a3000.h m68k/scsi: a3000 - Kill a3000_scsiregs typedef 2010-05-26 19:51:07 +02:00
a4000t.c m68k: amiga - A4000T SCSI platform device conversion 2010-05-26 19:51:09 +02:00
advansys.c [SCSI] advansys: fix narrow board error path 2010-05-01 09:54:22 -05:00
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 scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
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 Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing 2010-05-24 08:01:10 -07:00
gdth.h
gvp11.c m68k/scsi: gvp11 - Do not use legacy Scsi_Host.base 2010-05-26 19:51:08 +02:00
gvp11.h m68k: amiga - GVP Series II SCSI zorro_driver conversion 2010-05-26 19:51:08 +02:00
hosts.c
hpsa_cmd.h [SCSI] hpsa: remove unneeded defines 2010-05-02 11:02:17 -04:00
hpsa.c [SCSI] hpsa: remove unneeded defines 2010-05-02 11:02:17 -04:00
hpsa.h
hptiop.c
hptiop.h
ibmmca.c
imm.c
imm.h
in2000.c
in2000.h
initio.c
initio.h
ipr.c [SCSI] ipr: fix resource path display and formatting 2010-07-21 13:52:13 -07:00
ipr.h [SCSI] ipr: fix resource path display and formatting 2010-07-21 13:52:13 -07:00
ips.c
ips.h
iscsi_tcp.c [SCSI] iscsi_tcp: remove sk_sleep check 2010-05-25 10:04:10 -05:00
iscsi_tcp.h [SCSI] iscsi_tcp: Remove unused field iscsi_conn from struct iscsi_sw_tcp_conn 2010-04-11 14:04:05 -05:00
jazz_esp.c
Kconfig
lasi700.c
libiscsi_tcp.c [SCSI] iscsi_tcp: change & to && 2010-04-11 14:03:59 -05:00
libiscsi.c [SCSI] libiscsi: regression: fix header digest errors 2010-05-02 11:16:50 -04:00
libsrp.c
mac53c94.c powerpc/macio: Fix probing of macio devices by using the right of match table 2010-06-02 17:50:38 +10:00
mac53c94.h
mac_esp.c
mac_scsi.c
mac_scsi.h
Makefile [SCSI] add scsi trace core functions and put trace points 2010-04-30 12:51:10 -05:00
megaraid.c scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
megaraid.h scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
mesh.c powerpc/macio: Fix probing of macio devices by using the right of match table 2010-06-02 17:50:38 +10:00
mesh.h
mvme16x_scsi.c
mvme147.c m68k/scsi: mvme147 - Kill obsolete HOSTS_C logic 2010-05-26 19:51:07 +02:00
mvme147.h [SCSI] mvme147: Reindentation 2010-05-02 15:55:03 -04: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: use noop_llseek() instead of default_llseek() 2010-05-27 09:12:56 -07:00
osst.h
pas16.c
pas16.h
pmcraid.c
pmcraid.h
ppa.c
ppa.h
ps3rom.c
qla1280.c
qla1280.h
qlogicfas408.c
qlogicfas408.h
qlogicfas.c
qlogicpti.c of: Remove duplicate fields from of_platform_driver 2010-05-22 00:10:40 -06:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi_debug.c [SCSI] Merge scsi-misc-2.6 into scsi-rc-fixes-2.6 2010-05-18 10:37:41 -04:00
scsi_devinfo.c
scsi_error.c [SCSI] Merge scsi-misc-2.6 into scsi-rc-fixes-2.6 2010-05-18 10:37:41 -04:00
scsi_ioctl.c
scsi_lib_dma.c
scsi_lib.c
scsi_logging.h
scsi_module.c
scsi_netlink.c
scsi_priv.h
scsi_proc.c
scsi_sas_internal.h
scsi_scan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2010-05-27 10:28:11 -07:00
scsi_sysctl.c
scsi_sysfs.c [SCSI] fix sdev_rw_attr macro for scsi device sysfs entries 2010-05-01 14:16:30 -05:00
scsi_tgt_if.c
scsi_tgt_lib.c
scsi_tgt_priv.h
scsi_trace.c [SCSI] scsi_trace: Enhance SCSI command tracing 2010-04-30 12:52:08 -05:00
scsi_transport_api.h
scsi_transport_fc_internal.h
scsi_transport_fc.c [SCSI] Allow FC LLD to fast-fail scsi eh by introducing new eh return 2010-04-11 09:49:33 -05:00
scsi_transport_iscsi.c
scsi_transport_sas.c
scsi_transport_spi.c
scsi_transport_srp_internal.h
scsi_transport_srp.c
scsi_typedefs.h
scsi_wait_scan.c
scsi.c [SCSI] add scsi trace core functions and put trace points 2010-04-30 12:51:10 -05:00
scsi.h
scsicam.c
sd_dif.c
sd.c SCSI: implement sd_unlock_native_capacity() 2010-06-02 13:50:04 -04:00
sd.h
ses.c
sg.c scsi: Push down BKL into ioctl functions 2010-05-17 05:27:04 +02:00
sgiwd93.c
sim710.c
sni_53c710.c
sr_ioctl.c
sr_vendor.c
sr.c
sr.h
st_options.h
st.c st: use noop_llseek() instead of default_llseek() 2010-05-27 09:12:56 -07:00
st.h
stex.c
sun3_NCR5380.c
sun3_scsi_vme.c
sun3_scsi.c
sun3_scsi.h
sun3x_esp.c
sun_esp.c of: Remove duplicate fields from of_platform_driver 2010-05-22 00:10:40 -06:00
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 [SCSI] wd33c93: Kill empty wd33c93_release() 2010-05-02 15:54:15 -04:00
wd33c93.h [SCSI] wd33c93: Kill empty wd33c93_release() 2010-05-02 15:54:15 -04:00
wd7000.c [SCSI] wd7000: fix reset handler typo spin_unlock_irq() => spin_lock_irq() 2010-04-11 13:37:33 -05:00
zalon.c
zorro7xx.c m68k: amiga - Zorro bus modalias support 2010-05-17 21:37:41 +02:00