1
linux/drivers/ata
Mark Lord 4742d54fa4 2.6.21 fix lba48 bug in libata fill_result_tf()
Current 2.6.21 libata does the following:

void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
{
        struct ata_ioports *ioaddr = &ap->ioaddr;

        tf->command = ata_check_status(ap);
	...
        if (tf->flags & ATA_TFLAG_LBA48) {
                iowrite8(tf->ctl | ATA_HOB, ioaddr->ctl_addr);
                tf->hob_feature = ioread8(ioaddr->error_addr);
                ...
        }
}
...
static void fill_result_tf(struct ata_queued_cmd *qc)
{
        struct ata_port *ap = qc->ap;

        ap->ops->tf_read(ap, &qc->result_tf);
        qc->result_tf.flags = qc->tf.flags;
}

Based on this, those last two statements fill_result_tf()
appear to me to be in the wrong order, in that the tf->flags
are uninitialized at the point where tf_read() is invoked.
So for lba48 commands, tf_read() won't be reading back the
full lba48 register contents..

Correct?

This patch corrects fill_result_tf() so that the flags
get copied to result_tf before they are used by tf_read().

Signed-off-by:  Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-04-04 02:07:28 -04:00
..
ahci.c ahci.c: walkaround for SB600 SATA internal error issue 2007-03-28 02:04:27 -04:00
ata_generic.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
ata_piix.c ata_piix: Remove ugly layering violation 2007-03-09 08:41:15 -05:00
Kconfig drivers/ata/Kconfig: PATA_SCC depends on wrong platform 2007-03-19 11:56:59 -04:00
libata-acpi.c [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
libata-core.c 2.6.21 fix lba48 bug in libata fill_result_tf() 2007-04-04 02:07:28 -04:00
libata-eh.c libata: IDENTIFY backwards for drive side cable detection 2007-03-28 02:04:27 -04:00
libata-scsi.c libata: add CONFIG_PM to libata core layer 2007-03-02 18:30:35 -05:00
libata-sff.c [libata] Trim trailing whitespace. 2007-02-26 05:51:33 -05:00
libata.h [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
Makefile libata: PATA driver for Celleb 2007-02-21 04:58:16 -05:00
pata_ali.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_amd.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_artop.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_atiixp.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cmd64x.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cs5520.c [PATCH] trivial ATA iomem annotations 2007-03-14 15:27:50 -07:00
pata_cs5530.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cs5535.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_cypress.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_efar.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_hpt3x2n.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt3x3.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_hpt37x.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pata_hpt366.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_isapnp.c libata: clear drvdata in ata_host_release(), take#2 2007-03-01 20:16:28 -05:00
pata_it821x.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_it8213.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_ixp4xx_cf.c pata_ixp4xx_cf: fix interrupt 2007-03-19 11:58:01 -04:00
pata_jmicron.c [libata] pata_jmicron: build fix 2007-03-03 10:36:19 -05:00
pata_legacy.c pata_legacy: fix io/irq mismatch 2007-03-06 04:04:30 -05:00
pata_marvell.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_mpc52xx.c [PATCH] misc NULL noise 2007-03-14 15:27:49 -07:00
pata_mpiix.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_netcell.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_ns87410.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_oldpiix.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_opti.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_optidma.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_pcmcia.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pata_pdc202xx_old.c pata_pdc202xx_old: LBA48 bug 2007-03-28 02:05:13 -04:00
pata_pdc2027x.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pata_platform.c libata: clear drvdata in ata_host_release(), take#2 2007-03-01 20:16:28 -05:00
pata_qdi.c pata_qdi: Fix initialisation 2007-03-02 18:18:38 -05:00
pata_radisys.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_rz1000.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sc1200.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_scc.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_serverworks.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sil680.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sis.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_sl82c105.c [libata] pata_{legacy,sc1200,sl82c105}: add missing hooks 2007-03-02 18:09:05 -05:00
pata_triflex.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_via.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_winbond.c [libata] bump versions 2007-02-26 06:04:24 -05:00
pdc_adma.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_inic162x.c sata_inic162x: kill double region requests 2007-03-19 11:56:59 -04:00
sata_mv.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_nv.c sata_nv: revert use of notifiers for now 2007-03-09 08:41:16 -05:00
sata_promise.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_promise.h
sata_qstor.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_sil24.c sata_sil24: Add Adaptec 1220SA PCI ID 2007-03-19 11:56:59 -04:00
sata_sil.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
sata_sis.c [PATCH] trivial ATA iomem annotations 2007-03-14 15:27:50 -07:00
sata_svw.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_sx4.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_uli.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_via.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_vsc.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sis.h SiS warning fixes 2007-02-21 04:58:17 -05:00