From: David Milburn <dmilburn@redhat.com> Date: Wed, 4 Feb 2009 11:38:13 -0600 Subject: [scsi] libata: sas_ata fixup sas_sata_ops Message-id: 20090204173813.GB5146@dhcp-210.hsv.redhat.com O-Subject: [RHEL5.4 PATCH] libata: sas_ata fixup sas_sata_ops Bugzilla: 483171 RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com> RH-Acked-by: Anton Arapov <aarapov@redhat.com> Stratus is experiencing a crash on boot up when aic94xx is loading when SAS and SATA disks are present. During initialization ata_qc_complete is called which in turn calls fill_result_tf and since sas_ata.c sas_sata_ops doesn't set the .qc_fill_rtf pointer the system crashes static void fill_result_tf(struct ata_queued_cmd *qc) { struct ata_port *ap = qc->ap; qc->result_tf.flags = qc->tf.flags; ap->ops->qc_fill_rtf(qc); <=====CRASH } This patch resolves BZ 483171, Stratus has confirmed a 2.6.18-130.el5 test kernel, and it corrects the backport of this upstream commit. commit 4c9bf4e799ce06a7378f1196587084802a414c03 Author: Tejun Heo <htejun@gmail.com> Date: Mon Apr 7 22:47:20 2008 +0900 libata: replace tf_read with qc_fill_rtf for non-SFF drivers Please review and ACK. Thanks, David drivers/scsi/libsas/sas_ata.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 835e13e..1a51cec 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c @@ -351,7 +351,8 @@ static struct ata_port_operations sas_sata_ops = { .phy_reset = sas_ata_phy_reset, .post_internal_cmd = sas_ata_post_internal, .qc_prep = ata_noop_qc_prep, - .qc_issue = sas_ata_qc_fill_rtf, + .qc_issue = sas_ata_qc_issue, + .qc_fill_rtf = sas_ata_qc_fill_rtf, .port_start = ata_sas_port_start, .port_stop = ata_sas_port_stop, .scr_read = sas_ata_scr_read,