aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorShaohua Li <shaohua.li@intel.com>2008-03-25 04:50:45 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-04-17 15:56:29 -0400
commit48feb3c419508487becfb9ea3afcc54c3eac6d80 (patch)
treea2fb97368937e20a4f4a837d67543ea816186c7b /drivers/ata
parent094e50b2f74146d8ee924fea4808e58c4ed2f163 (diff)
ata-acpi: don't call _GTF for disabled drive
I got below log after a S3 resume in a ASUS A6VC laptop. The system has only one IDE drive. It appears there is no reason calling _GTF for disabled drive. ACPI Error (dsopcode-0483): Attempt to CreateField of length zero [20070126] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node df822a7c), AE_AML_OPERAND_VALUE ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV0._GTF] (Node df822bd0), AE_AML_OPERAND_VALUE ata2.00: _GTF evaluation failed (AE 0x3006) ACPI Error (dsopcode-0483): Attempt to CreateField of length zero [20070126] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.RATA] (Node df822a7c), AE_AML_OPERAND_VALUE ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.IDE0.CHN1.DRV1._GTF] (Node df822b94), AE_AML_OPERAND_VALUE ata2.01: _GTF evaluation failed (AE 0x3006) Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-acpi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c
index f88a4f940e11..8c1cfc645c85 100644
--- a/drivers/ata/libata-acpi.c
+++ b/drivers/ata/libata-acpi.c
@@ -839,7 +839,8 @@ void ata_acpi_on_resume(struct ata_port *ap)
839 */ 839 */
840 ata_link_for_each_dev(dev, &ap->link) { 840 ata_link_for_each_dev(dev, &ap->link) {
841 ata_acpi_clear_gtf(dev); 841 ata_acpi_clear_gtf(dev);
842 if (ata_dev_get_GTF(dev, NULL) >= 0) 842 if (ata_dev_enabled(dev) &&
843 ata_dev_get_GTF(dev, NULL) >= 0)
843 dev->flags |= ATA_DFLAG_ACPI_PENDING; 844 dev->flags |= ATA_DFLAG_ACPI_PENDING;
844 } 845 }
845 } else { 846 } else {
@@ -849,7 +850,8 @@ void ata_acpi_on_resume(struct ata_port *ap)
849 */ 850 */
850 ata_link_for_each_dev(dev, &ap->link) { 851 ata_link_for_each_dev(dev, &ap->link) {
851 ata_acpi_clear_gtf(dev); 852 ata_acpi_clear_gtf(dev);
852 dev->flags |= ATA_DFLAG_ACPI_PENDING; 853 if (ata_dev_enabled(dev))
854 dev->flags |= ATA_DFLAG_ACPI_PENDING;
853 } 855 }
854 } 856 }
855} 857}