linux/drivers/ata
Nishanth Aravamudan 3f1e046ad3 libata/sas: only set FROZEN flag if new EH is supported
On 16.06.2011 [08:28:39 -0500], Brian King wrote:
> On 06/16/2011 02:51 AM, Tejun Heo wrote:
> > On Wed, Jun 15, 2011 at 04:34:17PM -0700, Nishanth Aravamudan wrote:
> >>> That looks like the right thing to do. For ipr's usage of
> >>> libata, we don't have the concept of a port frozen state, so this flag
> >>> should really never get set. The alternate way to fix this would be to
> >>> only set ATA_PFLAG_FROZEN in ata_port_alloc if ap->ops->error_handler
> >>> is not NULL.
> >>
> >> It seemed like ipr is as you say, but I wasn't sure if it was
> >> appropriate to make the change above in the common libata-scis code or
> >> not. I don't want to break some other device on accident.
> >>
> >> Also, I tried your suggestion, but I don't think that can happen in
> >> ata_port_alloc? ata_port_alloc is allocated ap itself, and it seems like
> >> ap->ops typically gets set only after ata_port_alloc returns?
> >
> > Maybe we can test error_handler in ata_sas_port_start()?
>
> Good point. Since libsas is converted to the new eh now, we would need to have
> this test.

Commit 7b3a24c57d ("ahci: don't enable
port irq before handler is registered") caused a regression for CD-ROMs
attached to the IPR SATA bus on Power machines:

  ata_port_alloc: ENTER
  ata_port_probe: ata1: bus probe begin
  ata1.00: ata_dev_read_id: ENTER
  ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
  ata1.00: ata_dev_read_id: ENTER
  ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
  ata1.00: limiting speed to UDMA7:PIO5
  ata1.00: ata_dev_read_id: ENTER
  ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
  ata1.00: disabled
  ata_port_probe: ata1: bus probe end
  scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured

The FROZEN flag added in that commit is only cleared by the new EH code,
which is not used by ipr. Clear this flag in the SAS code if we don't
support new EH.

Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
2011-06-23 16:41:26 -04:00
..
Kconfig pata_arasan_cf: Adding support for arasan compact flash host controller 2011-03-14 02:52:46 -04:00
Makefile pata_arasan_cf: Adding support for arasan compact flash host controller 2011-03-14 02:52:46 -04:00
acard-ahci.c drivers/ata/acard-ahci.c: fix enum warning 2011-05-19 20:45:15 -04:00
ahci.c ahci: AHCI-mode SATA patch for Intel Panther Point DeviceIDs 2011-04-24 11:34:05 -04:00
ahci.h ahci: EM supported message type sysfs attribute 2011-04-24 11:31:31 -04:00
ahci_platform.c libata: reimplement link power management 2010-10-21 20:21:04 -04:00
ata_generic.c [libata] trivial: trim trailing whitespace for drivers/ata/*.[ch] 2011-03-02 02:36:45 -05:00
ata_piix.c ata_piix: IDE-mode SATA patch for Intel Panther Point DeviceIDs 2011-04-24 11:34:05 -04:00
libahci.c Revert "libata: ahci_start_engine compliant to AHCI spec" 2011-05-14 10:45:59 -07:00
libata-acpi.c libata: remove ATA_FLAG_MMIO 2011-03-02 02:36:46 -05:00
libata-core.c libata: apply NOSETXFER horkage to the affected Pioneer drives 2011-06-23 16:40:50 -04:00
libata-eh.c libata: fix unexpectedly frozen port after ata_eh_reset() 2011-06-07 15:55:55 -04:00
libata-pmp.c libata-pmp: add support for Thermaltake BlackX Duet esata drive dock 2011-05-19 20:48:59 -04:00
libata-scsi.c libata/sas: only set FROZEN flag if new EH is supported 2011-06-23 16:41:26 -04:00
libata-sff.c libata-sff: prevent irq descriptions for dummy ports 2011-05-14 14:59:54 -04:00
libata-transport.c drivers/ata/libata-transport.c: include linux/slab.h 2010-10-21 20:21:04 -04:00
libata-transport.h [libata] Add ATA transport class 2010-10-21 20:21:03 -04:00
libata.h libata: plumb sas port scan into standard libata paths 2011-03-02 02:36:45 -05:00
pata_acpi.c libata: remove ATA_FLAG_{SRST|SATA_RESET} 2011-03-02 02:36:46 -05:00
pata_ali.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_amd.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_arasan_cf.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_artop.c pata_artop: Fix device ID parity check 2010-09-09 14:19:18 -04:00
pata_at32.c libata: remove ATA_FLAG_MMIO 2011-03-02 02:36:46 -05:00
pata_at91.c pata_at91: SMC settings calculation bugfixes, support for t6z and IORDY 2011-05-14 15:00:13 -04:00
pata_atiixp.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_atp867x.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_bf54x.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_cmd64x.c pata_cm64x: fix boot crash on parisc 2011-05-14 14:59:15 -04:00
pata_cmd640.c pata_cmd640: implement sff_irq_check() method 2010-10-21 20:21:05 -04:00
pata_cs5520.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_cs5530.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_cs5535.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_cs5536.c pata_cs5536: avoid implicit MSR API inclusion on x86-64 2010-12-26 19:42:15 -05:00
pata_cypress.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_efar.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_hpt3x2n.c ata: pata: Convert pr_*(DRV_NAME ...) to pr_fmt/pr_<level> 2011-03-14 02:56:31 -04:00
pata_hpt3x3.c [libata] trivial: trim trailing whitespace for drivers/ata/*.[ch] 2011-03-02 02:36:45 -05:00
pata_hpt37x.c ata: pata: Convert pr_*(DRV_NAME ...) to pr_fmt/pr_<level> 2011-03-14 02:56:31 -04:00
pata_hpt366.c ata: pata: Convert pr_*(DRV_NAME ...) to pr_fmt/pr_<level> 2011-03-14 02:56:31 -04:00
pata_icside.c libata-sff: separate out BMDMA irq handler 2010-05-25 19:40:24 -04:00
pata_isapnp.c [libata] Improve timeout handling 2009-03-24 22:52:39 -04:00
pata_it821x.c [libata] trivial: trim trailing whitespace for drivers/ata/*.[ch] 2011-03-02 02:36:45 -05:00
pata_it8213.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_ixp4xx_cf.c drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
pata_jmicron.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_legacy.c pata_legacy: fix CONFIG_PATA_WINBOND_VLB_MODULE test 2010-11-12 17:10:53 -05:00
pata_macio.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
pata_marvell.c [libata] trivial: trim trailing whitespace for drivers/ata/*.[ch] 2011-03-02 02:36:45 -05:00
pata_mpc52xx.c dt: Eliminate of_platform_{,un}register_driver 2011-02-28 13:22:46 -07:00
pata_mpiix.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_netcell.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_ninja32.c [libata] trivial: trim trailing whitespace for drivers/ata/*.[ch] 2011-03-02 02:36:45 -05:00
pata_ns87410.c libata: Pass host flags into the pci helper 2010-03-01 14:58:46 -05:00
pata_ns87415.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_octeon_cf.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
pata_of_platform.c dt: Eliminate of_platform_{,un}register_driver 2011-02-28 13:22:46 -07:00
pata_oldpiix.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_opti.c libata: Pass host flags into the pci helper 2010-03-01 14:58:46 -05:00
pata_optidma.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_palmld.c Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6 into devel-stable 2011-03-26 10:03:03 +00:00
pata_pcmcia.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
pata_pdc202xx_old.c pata_pdc202xx_old: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_pdc2027x.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
pata_piccolo.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_platform.c libata-sff: clean up BMDMA initialization 2010-05-19 13:32:19 -04:00
pata_pxa.c libata: remove ATA_FLAG_MMIO 2011-03-02 02:36:46 -05:00
pata_qdi.c [libata] convert drivers to use ata.h mode mask defines 2009-03-24 22:13:27 -04:00
pata_radisys.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_rb532_cf.c drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
pata_rdc.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_rz1000.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_samsung_cf.c libata: remove ATA_FLAG_MMIO 2011-03-02 02:36:46 -05:00
pata_sc1200.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_scc.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
pata_sch.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_serverworks.c libata-sff: separate out BMDMA init 2010-05-25 19:40:30 -04:00
pata_sil680.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_sis.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pata_sl82c105.c pata_sl82c105: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_triflex.c ATA: Don't powerdown Compaq Triflex IDE device on suspend 2011-05-19 20:46:40 -04:00
pata_via.c libata,pata_via: revert ata_wait_idle() removal from ata_sff/via_tf_load() 2010-09-09 22:27:44 -04:00
pdc_adma.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_dwc_460ex.c drivers/ata/sata_dwc_460ex: Fix typo 'corrresponding' 2011-06-23 16:40:28 -04:00
sata_fsl.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sata_inic162x.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_mv.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sata_nv.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sata_promise.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_promise.h
sata_qstor.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_sil.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_sil24.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_sis.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_svw.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_sx4.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_uli.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sata_via.c Fix common misspellings 2011-03-31 11:26:23 -03:00
sata_vsc.c libata: remove ATA_FLAG_NO_LEGACY 2011-03-02 02:36:46 -05:00
sis.h