]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.drivers/libata-implement-NO_SPINDOWN
Imported linux-2.6.27.39 suse/xen patches.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / libata-implement-NO_SPINDOWN
diff --git a/src/patches/suse-2.6.27.31/patches.drivers/libata-implement-NO_SPINDOWN b/src/patches/suse-2.6.27.31/patches.drivers/libata-implement-NO_SPINDOWN
deleted file mode 100644 (file)
index 920def7..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-From 8794806469a35ab09378e9ee7ad39da6284cb8ff Mon Sep 17 00:00:00 2001
-From: Rafael J. Wysocki <rjw@sisk.pl>
-Date: Mon, 3 Nov 2008 19:01:04 +0900
-Subject: [PATCH] SATA: Blacklisting of systems that spin off disks during ACPI power off (rev. 2)
-References: bnc#441721
-
-Introduce new libata flags ATA_FLAG_NO_POWEROFF_SPINDOWN and
-ATA_FLAG_NO_HIBERNATE_SPINDOWN that, if set, will prevent disks from
-being spun off during system power off and hibernation, respectively
-(to handle the hibernation case we need the new system state
-SYSTEM_HIBERNATE_ENTER that can be checked against by libata, in
-analogy with SYSTEM_POWER_OFF).
-
-Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
-Signed-off-by: Tejun Heo <tj@kernel.org>
-Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-Signed-off-by: Tejun Heo <teheo@suse.de>
----
- drivers/ata/libata-scsi.c |   20 +++++++++++++++++---
- include/linux/libata.h    |    2 ++
- 2 files changed, 19 insertions(+), 3 deletions(-)
-
-Index: linux-2.6.27/drivers/ata/libata-scsi.c
-===================================================================
---- linux-2.6.27.orig/drivers/ata/libata-scsi.c
-+++ linux-2.6.27/drivers/ata/libata-scsi.c
-@@ -46,6 +46,7 @@
- #include <linux/libata.h>
- #include <linux/hdreg.h>
- #include <linux/uaccess.h>
-+#include <linux/suspend.h>
- #include "libata.h"
-@@ -1181,6 +1182,17 @@ static unsigned int ata_scsi_start_stop_
-               tf->command = ATA_CMD_VERIFY;   /* READ VERIFY */
-       } else {
-+              /* Some odd clown BIOSen issue spindown on power off (ACPI S4
-+               * or S5) causing some drives to spin up and down again.
-+               */
-+              if ((qc->ap->flags & ATA_FLAG_NO_POWEROFF_SPINDOWN) &&
-+                  system_state == SYSTEM_POWER_OFF)
-+                      goto skip;
-+
-+              if ((qc->ap->flags & ATA_FLAG_NO_HIBERNATE_SPINDOWN) &&
-+                   system_entering_hibernation())
-+                      goto skip;
-+
-               /* XXX: This is for backward compatibility, will be
-                * removed.  Read Documentation/feature-removal-schedule.txt
-                * for more info.
-@@ -1204,8 +1216,7 @@ static unsigned int ata_scsi_start_stop_
-                               scmd->scsi_done = qc->scsidone;
-                               qc->scsidone = ata_delayed_done;
-                       }
--                      scmd->result = SAM_STAT_GOOD;
--                      return 1;
-+                      goto skip;
-               }
-               /* Issue ATA STANDBY IMMEDIATE command */
-@@ -1221,10 +1232,13 @@ static unsigned int ata_scsi_start_stop_
-       return 0;
--invalid_fld:
-+ invalid_fld:
-       ata_scsi_set_sense(scmd, ILLEGAL_REQUEST, 0x24, 0x0);
-       /* "Invalid field in cbd" */
-       return 1;
-+ skip:
-+      scmd->result = SAM_STAT_GOOD;
-+      return 1;
- }
-Index: linux-2.6.27/include/linux/libata.h
-===================================================================
---- linux-2.6.27.orig/include/linux/libata.h
-+++ linux-2.6.27/include/linux/libata.h
-@@ -186,6 +186,8 @@ enum {
-       ATA_FLAG_PIO_POLLING    = (1 << 9), /* use polling PIO if LLD
-                                            * doesn't handle PIO interrupts */
-       ATA_FLAG_NCQ            = (1 << 10), /* host supports NCQ */
-+      ATA_FLAG_NO_POWEROFF_SPINDOWN = (1 << 11), /* don't spindown before poweroff */
-+      ATA_FLAG_NO_HIBERNATE_SPINDOWN = (1 << 12), /* don't spindown before hibernation */
-       ATA_FLAG_DEBUGMSG       = (1 << 13),
-       ATA_FLAG_IGN_SIMPLEX    = (1 << 15), /* ignore SIMPLEX */
-       ATA_FLAG_NO_IORDY       = (1 << 16), /* controller lacks iordy */