remarkable-linux/drivers/ata
Tejun Heo f4d6d00466 libata: ignore EH scheduling during initialization
libata enables SCSI host during ATA host activation which happens
after IRQ handler is registered and IRQ is enabled.  All ATA ports are
in frozen state when IRQ is enabled but frozen ports may raise limited
number of IRQs after being frozen - IOW, ->freeze() is not responsible
for clearing pending IRQs.  During normal operation, the IRQ handler
is responsible for clearing spurious IRQs on frozen ports and it
usually doesn't require any extra code.

Unfortunately, during host initialization, the IRQ handler can end up
scheduling EH for a port whose SCSI host isn't initialized yet.  This
results in OOPS in the SCSI midlayer.  This is relatively short window
and scheduling EH for probing is the first thing libata does after
initialization, so ignoring EH scheduling until initialization is
complete solves the problem nicely.

This problem was spotted by Berck E. Nash in the following thread.

  http://thread.gmane.org/gmane.linux.kernel/519412

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Berck E. Nash <flyboy@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-11 18:09:18 -04:00
..
ahci.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
ata_generic.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
ata_piix.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
Kconfig [S390] Kconfig: menus with depends on HAS_IOMEM. 2007-05-10 15:46:07 +02:00
libata-acpi.c libata-acpi: fix _GTF command protocol for ATAPI devices 2007-05-09 20:15:46 -04:00
libata-core.c libata: ignore EH scheduling during initialization 2007-05-11 18:09:18 -04:00
libata-eh.c libata: ignore EH scheduling during initialization 2007-05-11 18:09:18 -04:00
libata-scsi.c libata: implement libata.spindown_compat 2007-05-11 18:01:04 -04:00
libata-sff.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
libata.h libata: implement libata.spindown_compat 2007-05-11 18:01:04 -04:00
Makefile Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
pata_ali.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_amd.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_artop.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_atiixp.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_cmd64x.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_cmd640.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_cs5520.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_cs5530.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_cs5535.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_cypress.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_efar.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_hpt3x2n.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_hpt3x3.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_hpt37x.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_hpt366.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_icside.c [ARM] Add support for ICSIDE interface on RiscPC 2007-05-03 14:16:56 +01:00
pata_isapnp.c libata: convert the remaining PATA drivers to new init model 2007-04-28 14:16:06 -04:00
pata_it821x.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_it8213.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_ixp4xx_cf.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_jmicron.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_legacy.c libata: convert the remaining PATA drivers to new init model 2007-04-28 14:16:06 -04:00
pata_marvell.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_mpc52xx.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_mpiix.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_netcell.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_ns87410.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_oldpiix.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_opti.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_optidma.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_pcmcia.c pata_pcmcia.c: add card ident for jvc cdrom 2007-05-09 20:15:46 -04:00
pata_pdc202xx_old.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_pdc2027x.c libata: add deadline support to prereset and reset methods 2007-05-01 07:49:53 -04:00
pata_platform.c libata: convert the remaining PATA drivers to new init model 2007-04-28 14:16:06 -04:00
pata_qdi.c Fix pata_qdi.c probe code 2007-05-09 20:15:47 -04:00
pata_radisys.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_rz1000.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_sc1200.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_scc.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_serverworks.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_sil680.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_sis.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_sl82c105.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_triflex.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_via.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_winbond.c SPIN_LOCK_UNLOCKED cleanup in drivers/ata/pata_winbond.c 2007-04-28 15:16:40 -04:00
pdc_adma.c libata: convert the remaining PATA drivers to new init model 2007-04-28 14:16:06 -04:00
sata_inic162x.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
sata_mv.c libata: convert the remaining SATA drivers to new init model 2007-04-28 14:16:06 -04:00
sata_nv.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
sata_promise.c sata_promise: SATAII-150/300 TX4 port numbering fix 2007-05-09 20:15:46 -04:00
sata_promise.h
sata_qstor.c libata: convert the remaining SATA drivers to new init model 2007-04-28 14:16:06 -04:00
sata_sil.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
sata_sil24.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
sata_sis.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
sata_svw.c [POWERPC] Rename get_property to of_get_property: drivers 2007-05-02 20:04:32 +10:00
sata_sx4.c libata: convert the remaining SATA drivers to new init model 2007-04-28 14:16:06 -04:00
sata_uli.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
sata_via.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
sata_vsc.c libata: convert the remaining SATA drivers to new init model 2007-04-28 14:16:06 -04:00
sis.h libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00