--- /dev/null
+From b5b3fa386b8f96c7fa92e507e5deddc2637924b4 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Thu, 31 Jul 2008 17:02:42 +0900
+Subject: [PATCH] libata: misc updates to prepare for slave link
+References: bnc#441420
+
+* Add ATA_EH_ALL_ACTIONS.
+
+* Make sata_link_{on|off}_line() return bool instead of int.
+
+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-core.c | 16 ++++++++--------
+ include/linux/libata.h | 6 ++++--
+ 2 files changed, 12 insertions(+), 10 deletions(-)
+
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -5052,16 +5052,16 @@ int sata_scr_write_flush(struct ata_link
+ * None.
+ *
+ * RETURNS:
+- * 1 if the port online status is available and online.
++ * True if the port online status is available and online.
+ */
+-int ata_link_online(struct ata_link *link)
++bool ata_link_online(struct ata_link *link)
+ {
+ u32 sstatus;
+
+ if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0 &&
+ (sstatus & 0xf) == 0x3)
+- return 1;
+- return 0;
++ return true;
++ return false;
+ }
+
+ /**
+@@ -5076,16 +5076,16 @@ int ata_link_online(struct ata_link *lin
+ * None.
+ *
+ * RETURNS:
+- * 1 if the port offline status is available and offline.
++ * True if the port offline status is available and offline.
+ */
+-int ata_link_offline(struct ata_link *link)
++bool ata_link_offline(struct ata_link *link)
+ {
+ u32 sstatus;
+
+ if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0 &&
+ (sstatus & 0xf) != 0x3)
+- return 1;
+- return 0;
++ return true;
++ return false;
+ }
+
+ #ifdef CONFIG_PM
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -321,6 +321,8 @@ enum {
+ ATA_EH_LPM = (1 << 4), /* link power management action */
+
+ ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE,
++ ATA_EH_ALL_ACTIONS = ATA_EH_REVALIDATE | ATA_EH_RESET |
++ ATA_EH_ENABLE_LINK | ATA_EH_LPM,
+
+ /* ata_eh_info->flags */
+ ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */
+@@ -921,8 +923,8 @@ extern int sata_scr_valid(struct ata_lin
+ extern int sata_scr_read(struct ata_link *link, int reg, u32 *val);
+ extern int sata_scr_write(struct ata_link *link, int reg, u32 val);
+ extern int sata_scr_write_flush(struct ata_link *link, int reg, u32 val);
+-extern int ata_link_online(struct ata_link *link);
+-extern int ata_link_offline(struct ata_link *link);
++extern bool ata_link_online(struct ata_link *link);
++extern bool ata_link_offline(struct ata_link *link);
+ #ifdef CONFIG_PM
+ extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg);
+ extern void ata_host_resume(struct ata_host *host);